不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);