有什么方法可以集中我的JFrame中心?

时间:2013-08-10 18:21:34

标签: java swing netbeans graphics jframe

我有自己的主框架和两个JDialogs,当有人选择菜单项时会弹出​​。我想要的是一个包含一些规则,建议等的帮助对话框。 setLayout(null)和Toolkit / Dimension当然没有帮助,因为它们将框架/对话框的左上角置于屏幕中心。 如何将框架和对话框的中心置于屏幕中心? 提前谢谢!

5 个答案:

答案 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声明

之前