Я разрабатываю приложение Java Swing. Как я могу сделать так, чтобы, когда сама программа и любые другие окна открываются, они появляются в центре экрана?
Центр Swing Windows
Ответ 1
frame.setLocationRelativeTo( null );
Ответ 2
frame.setLocationRelativeTo(нуль); сделать раму открытой в cetner
С уважением, Реан Фарук
Ответ 3
Это легко, если вы используете Netbeans. В окне свойств JFrame перейдите на вкладку Код. Существует опция "Создать центр" . Проверьте этот параметр. JFrame будет отображаться в центре.
Ответ 4
Вам нужно будет сделать это вручную, используя setLocation(x,y)
.
Что-то вроде:
Dimension dim = Toolkit.getDefaultToolkit().getScreenSize();
frame.setLocation((dim.width-frameWidth)/2, (dim.height-frameHeight)/2);
должен сделать это (не проверено).
Ответ 5
Выполнение этого вручную в многоэкранной среде дает что-то вроде этого (статическое, потому что вы, вероятно, захотите его в классе утилиты):
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)
, но кнопка должна быть добавлена в диалог и видна.