Как установить JFrame для отображения по центру, независимо от разрешения монитора?

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

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

11 ответов


Я всегда делал это таким образом:

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

здесь this задействован JFrame.


использовать setLocationRelativeTo(null)

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

если компонент равен null или GraphicsConfiguration, связанный с этим компонентом, равен null, окно помещается в центр экрана.

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

frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);

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


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

enter image description here


просто...

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

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

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

разъяснить, документы:

если компонент равен null или GraphicsConfiguration, связанный с этим компонентом, равен null, окно помещается в центр экрана.


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

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


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


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

frame.setLocationRelativeTo(null);


Если вы используете NetBeans, просто нажмите на рамку в представлении "дизайн", затем вкладку " Код " в его свойствах. Затем установите флажок "создать Центр". Это сделает работу.


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

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


вы можете использовать этот метод, который позволяет JFrame быть центрированным и полноэкранным одновременно.

yourframe.setExtendedState(JFrame.MAXIMIZED_BOTH);