Center a Frame/Dialog

From CodeCodex

[edit] Implementations

[edit] Java


// 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);