Центр Качели Windows - PullRequest
       34

Центр Качели Windows

17 голосов
/ 21 июня 2010

Я занимаюсь разработкой приложения на Java Swing. Как сделать так, чтобы при открытии самой программы и любых других окон они появлялись в центре экрана?

Ответы [ 5 ]

46 голосов
/ 21 июня 2010
frame.setLocationRelativeTo( null );
4 голосов
/ 04 марта 2013

frame.setLocationRelativeTo (нуль);откройте раму в cetner

С уважением, Рехан Фарук

3 голосов
/ 24 июля 2014

Это легко, если вы используете NetBeans.В окне свойств JFrame перейдите на вкладку " Код ". Есть опция как "Создать центр" . Проверьте эту опцию.JFrame будет отображаться в центре.

1 голос
/ 21 июня 2010

Выполнение этого вручную в многоэкранной среде дает что-то вроде этого (статическое, потому что вы, вероятно, хотели бы это в служебном классе):

  public static Rectangle getScreenBounds(Component top){
    GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
    GraphicsDevice[] gd = ge.getScreenDevices();

    if (top != null){
        Rectangle bounds = top.getBounds();
        int centerX = (int) bounds.getCenterX();
        int centerY = (int) bounds.getCenterY();

        for (GraphicsDevice device : gd){
            GraphicsConfiguration gc = device.getDefaultConfiguration();
            Rectangle r = gc.getBounds();
            if (r.contains(centerX, centerY)){
                return r;
            }
        }
    }
    return gd[0].getDefaultConfiguration().getBounds();
}

public void centerWindowOnScreen(Window windowToCenter){
    Rectangle bounds = getScreenBounds(windowToCenter);
    Point newPt = new Point(bounds.x + bounds.width / 2, bounds.y + bounds.height / 2);
    Dimension componentSize = windowToCenter.getSize();
    newPt.x -= componentSize.width / 2;
    newPt.y -= componentSize.height / 2;
    windowToCenter.setLocation(newPt);

}

Что касается кнопки по умолчанию, то это JDialog.getRootPane().setDefaultButton(btn), но кнопка должна быть уже добавлена ​​в диалог и видна.

1 голос
/ 21 июня 2010

Вам придется сделать это вручную, используя setLocation(x,y).

Что-то вроде:

Dimension dim = Toolkit.getDefaultToolkit().getScreenSize();
frame.setLocation((dim.width-frameWidth)/2, (dim.height-frameHeight)/2);

должно сделать это (не проверено).

...