Как настроить отображение JFrame по центру независимо от разрешения монитора? - PullRequest
184 голосов
/ 14 марта 2010

При работе с Java мне трудно расположить главное окно в центре экрана при запуске приложения.

Есть ли способ, которым я могу это сделать? Это не должно быть вертикально центрировано, горизонтальное выравнивание - более важная цель для меня. Но вертикальное выравнивание также приветствуется.

Ответы [ 13 ]

498 голосов
/ 14 марта 2010

Использование setLocationRelativeTo(null)

Этот метод имеет особый эффект, когда вы передаете ему null. Согласно Javadoc:

Если компонент имеет значение NULL или графическая конфигурация, связанная с этим компонентом, имеет значение NULL, окно размещается в центре экрана.

Это должно быть сделано после установки размера или вызова pack(), но перед установкой его видимым, например:

frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
218 голосов
/ 14 марта 2010

Я всегда так делал:

Dimension dim = Toolkit.getDefaultToolkit().getScreenSize();
this.setLocation(dim.width/2-this.getSize().width/2, dim.height/2-this.getSize().height/2);

, где this - задействованный JFrame.

53 голосов
/ 14 марта 2010

Вы можете позвонить JFrame.setLocationRelativeTo(null), чтобы центрировать окно.Обязательно поставьте это перед JFrame.setVisible(true)

26 голосов
/ 28 января 2016

Просто нажмите на форму и перейдите в свойства JFrame, затем вкладку Код и отметьте Generate Center.

enter image description here

11 голосов
/ 15 декабря 2014

Так просто, как это ...

setSize(220, 400);
setLocationRelativeTo(null);  

или, если вы используете рамку, установите рамку на

frame.setSize(220, 400);
frame.setLocationRelativeTo(null);  

Для уточнения, из документов :

Если компонент имеет значение NULL или графическая конфигурация, связанная с этим компонентом, имеет значение NULL, окно размещается в центре экрана.

7 голосов
/ 25 ноября 2015

Вы получите установленный размер после добавления этого:

frame.setLocationRelativeTo(null);

7 голосов
/ 21 февраля 2013

Я использую среду IDE NetBeans 7.2.1 в качестве среды разработки, и у вас есть возможность настроить свойства JForm.

в свойствах JForm перейдите на вкладку «Код» и настройте «Центр генерации». сначала вам нужно будет установить для политики размера формы значение «Сгенерировать код изменения размера».

6 голосов
/ 13 июня 2013

Я использую NetBeans IDE 7.3, и вот как я собираюсь централизовать свой JFrame Убедитесь, что вы щелкнули панель JFrame и перейдите на панель свойств JFrame, щелкните панель кода и установите флажок «Создать центр».

2 голосов
/ 31 марта 2015

Если вы используете NetBeans, просто нажмите на рамку в представлении конструктора, а затем на вкладке кода его свойства. Далее, проверьте «Генерировать центр». Это сделает работу.

1 голос
/ 05 декабря 2016

Если вы явно setPreferredSize(new Dimension(X, Y));, то лучше использовать:

setLocation(dim.width/2-this.getPreferredSize().width/2, dim.height/2-this.getPreferredSize().height/2);

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...