Center a Frame/Dialog

From CodeCodex

Implementations[edit]

Java[edit]

// centers the dialog within the screen [1.1]
//  (put that in the Frame/Dialog class)
public void centerScreen() {
  Dimension dim = getToolkit().getScreenSize();
  Rectangle abounds = getBounds();
  setLocation((dim.width - abounds.width) / 2,
      (dim.height - abounds.height) / 2);
  super.setVsible(true);
  requestFocus();
}
// centers the dialog within the parent container [1.1]
//  (put that in the Dialog class)
public void centerParent () {
  int x;
  int y;

  // Find out our parent 
  Container myParent = getParent();
  Point topLeft = myParent.getLocationOnScreen();
  Dimension parentSize = myParent.getSize();

  Dimension mySize = getSize();

  if (parentSize.width > mySize.width) 
    x = ((parentSize.width - mySize.width)/2) + topLeft.x;
  else 
    x = topLeft.x;
   
  if (parentSize.height > mySize.height) 
    y = ((parentSize.height - mySize.height)/2) + topLeft.y;
  else 
    y = topLeft.y;
   
  setLocation (x, y);
  super.setVsible(true);
  requestFocus();
}  

New with JDK1.4, JDialog has method to position a JDialog relative to a parent. For a JWindow or a JFrame with no parent, then

f.setSize(100,100); 
f.setLocationRelativeTo(NULL);