Java 将JFrame与pack()组合在一起
我试着将一个Java 将JFrame与pack()组合在一起,java,swing,jframe,window,pack,Java,Swing,Jframe,Window,Pack,我试着将一个JFrame放在中间,我以前是pack(),我得到了它,但我认为它不是干净的方式。 我就是这样做的: JFrame window = new JFrame(); //filling //window //with //stuff window.pack(); Dimension dim = Toolkit.getDefaultToolkit().getScreenSize(); int x = (dim.width - window.getPreferredSize().widt
JFrame
放在中间,我以前是pack()
,我得到了它,但我认为它不是干净的方式。
我就是这样做的:
JFrame window = new JFrame();
//filling
//window
//with
//stuff
window.pack();
Dimension dim = Toolkit.getDefaultToolkit().getScreenSize();
int x = (dim.width - window.getPreferredSize().width) / 2, y = (dim.height - window.getPreferredSize().height) / 2;
window.setBounds(x, y, window.getPreferredSize().width, window.getPreferredSize().height);
填充后我将其打包以获得最终的首选大小
,因此我可以在setBounds
方法中使用这些值。但我不喜欢打包后反弹
有更好的主意吗?要在屏幕上居中显示窗口,您需要在调用后立即调用
窗口。将LocationRelativeTo(null)
设置为在显示窗口之前:
JFrame window = new JFrame();
...
window.pack();
window.setLocationRelativeTo(null);
window.setVisible(true);
根据文件:
设置窗口相对于指定构件的位置
根据以下场景
下面提到的目标屏幕是窗口所指向的屏幕
应放在调用setLocationRelativeTo
方法之后
- 如果组件为
,或与此组件关联的null
组件为图形配置
,窗口位于 屏幕。中心点可通过以下方法获得:null
方法GraphicsEnvironment.getCenterPoint
另一方面
一些开发人员可能建议您使用而不是
setLocationRelativeTo(…)
,以尊重运行桌面应用程序的平台的本机窗口系统的默认位置。这很有意义,因为您的应用程序必须设计为在具有不同窗口系统和s的不同平台上运行。请参见。我也是这样做的,我对一个好的解决方案非常感兴趣!我不知道“空”是“屏幕中间”的同义词非常感谢,这就是我要找的!
public void setLocationRelativeTo(Component c)