2

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

4

5 回答 5

3

按顺序执行这些操作:

1)调用pack()setSize(...)在要显示的框架/对话框上(此时它应该已经添加了它的组件)。

2)然后,调用setLocationRelativeTo(null)该容器。或者,setLocationRelativeTo(parent)如果父级偏移并且您希望对话框在父级内的当前位置居中,则可以调用。

3)然后,调用setVisible(true)

于 2013-08-10T18:35:59.780 回答
2

我认为这会有所帮助:

frame.setLocationRelativeTo(null);

通常我们将 anull作为参数,但您可以输入 type 的参数Component,我更喜欢它,JOptionPane因为它总是显示在屏幕中央。

   frame.setLocationRelativeTo(new JOptionPane());
   //OR
   frame.setLocationRelativeTo(JOptionPane.getRootFrame());
  • 给你一个提示,不要使用null布局(绝对定位),总是使用LayoutManagers.
于 2013-08-10T18:29:39.540 回答
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);

这将显示一个中心位于屏幕中心的框架。

于 2013-08-10T18:31:23.087 回答
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;
    }
于 2013-08-10T18:24:35.550 回答
0

尝试将此添加到您的代码中:
frameName.setLocationRelativeTo(null);
这将使框架在您的屏幕中居中。一件事,确保在这行代码之前声明框架的大小。此行应在您的setVisible声明之前

于 2013-08-17T14:07:09.103 回答