不pipe显示器分辨率如何设置JFrame居中显示?
在使用Java的同时,我发现在启动应用程序时,我的主窗口很难定位在屏幕的中心。
有什么办法可以做到吗? 它不一定要垂直居中,水平alignment对我来说是更重要的目标。 但是垂直alignment也是受欢迎的。
我一直这样做:
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属性,然后select代码选项卡,然后选中Generate Center
。
像这样简单…
setSize(220, 400); setLocationRelativeTo(null);
或者如果你正在使用一个框架然后设置框架
frame.setSize(220, 400); frame.setLocationRelativeTo(null);
为了澄清, 从文档 :
如果该组件为null,或者与此组件关联的GraphicsConfiguration为null,则该窗口放置在屏幕的中心。
我使用NetBeans IDE 7.2.1作为我的开发人员环境,并且您可以selectconfigurationJForm属性。
在JForm属性中,转到“代码”选项卡并configuration“生成中心”。 您需要首先将“表单大小策略”设置为“生成resize代码”。
我正在使用NetBeans IDE 7.3,这是我如何集中我的JFrame确保您单击JFrame面板并转到您的JFrame属性栏,单击代码栏并select生成中心checkbox。
添加完后,您将获得设置的大小:
frame.setLocationRelativeTo(null);
如果您使用NetBeans,只需单击devise视图上的框架,然后单击其属性上的代码选项卡。 接下来,选中“生成中心”。 这将完成工作。
如果你明确地设置了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);