JDialog不以父JFrame为中心

时间:2014-03-24 16:23:08

标签: java swing jframe jdialog

我试图通过点击按钮让我的JDialog弹出我的JFrame中心。我有JOptionPanel在父JFrame上正确弹出,但JDialog相对于JFrame弹出但不在中心。

按钮在我的代码中实际上是JMenuItem,但我在这里将它们写成JButton以使事情变得更容易和直接。

这是我的代码:

从我的父JFrame调用:

JButton about = new JButton("About");
about.addActionListener(new ActionListener() { //this one IS NOT in the center of MyJFrame
                public void actionPerformed(ActionEvent e) {
                    new AboutDialog(MyJFrame.this);
                }
            });


JButton exit = new JButton("Exit");
exit.addActionListener(new ActionListener() { //this one IS in the center of MyJFrame
                    public void actionPerformed(ActionEvent e) {
                        if(JOptionPane.showConfirmDialog(MyJFrame.this, "Are you sure you want to exit ?","",JOptionPane.YES_NO_OPTION) == 0)
                            System.exit(0);
                    }
                });

AboutDialog Class

public class AboutDialog extends JDialog{
public AboutDialog(JFrame parent) {
        setLocationRelativeTo(parent);
        setLayout(new BorderLayout());
...

Dialog NOT Centered

JOptionPanel Centered Correctly

谢谢

1 个答案:

答案 0 :(得分:5)

setLocationRelativeTo(parent);

在将所有组件添加到对话框并打包对话框之后,在​​对话框可见之前,需要执行上述代码。

在当前代码中,对话框的大小为(0,0),因此无法正确居中。