我有自己的主框架和两个JDialogs,当有人选择菜单项时会弹出。我想要的是一个包含一些规则,建议等的帮助对话框。 setLayout(null)和Toolkit / Dimension当然没有帮助,因为它们将框架/对话框的左上角置于屏幕中心。 如何将框架和对话框的中心置于屏幕中心? 提前谢谢!
答案 0 :(得分:3)
按顺序执行以下操作:
1)在框架/对话框上调用pack()
或setSize(...)
(此时应该已添加其组件)。
2)然后,在该容器上调用setLocationRelativeTo(null)
。或者,如果父级是偏移的,您可以调用setLocationRelativeTo(parent)
,并且您希望对话框在父级的当前位置居中。
3)然后,拨打setVisible(true)
答案 1 :(得分:2)
我认为这会有所帮助:
frame.setLocationRelativeTo(null);
通常我们会将null
作为参数,但您可以设置Component
类型的参数,我更喜欢JOptionPane
,因为它总是显示在屏幕的中心。
frame.setLocationRelativeTo(new JOptionPane());
//OR
frame.setLocationRelativeTo(JOptionPane.getRootFrame());
null
布局(绝对
定位),始终使用LayoutManagers
。答案 2 :(得分:2)
setLocationRelativeTo(null)
只会在Dialog
没有尺寸的情况下居中左上角,例如如果您在.pack()
之后调用setLocationRelativeTo
方法。
小例子:
JFrame testFrame = new JFrame();
JButton testButton = new JButton();
testButton.setPreferredSize(new Dimension(500, 500));
testFrame.add(testButton);
testFrame.pack();
testFrame.setLocationRelativeTo(null);
testFrame.setVisible(true);
这将显示一个中心位于屏幕中心的框架。
答案 3 :(得分:1)
使用此辅助方法将任何JFrame或JDialog居中:
public static Window centerFrame(Window win) {
Dimension dim = Toolkit.getDefaultToolkit().getScreenSize();
win.setLocation((int) ((dim.getWidth() - win.getWidth()) / 2), (int) ((dim.getHeight() - win.getHeight()) / 2));
return win;
}
答案 4 :(得分:0)
尝试将此添加到您的代码中:
frameName.setLocationRelativeTo(null);
这将使框架在屏幕中居中。有一点,请确保在此代码行之前声明框架的大小。此行应该在setVisible
声明