javaswing:在现有窗口顶部定位对话框

hs1ihplo  于 2021-06-30  发布在  Java
关注(0)|答案(4)|浏览(344)

有人能展示简单的javaswing代码/web资源吗?当jframe的按钮被点击时,它会将弹出对话框的中心对齐到现有jframe窗口的顶部吗?

2ekbmq32

2ekbmq321#

哦..很简单:
假设您有一个包含jdialog的jframe,并且您希望jdialog(打开时)正好位于jframe的顶部。
因此,在jdialog构造函数中,应该有如下内容:

public class MyDialog extends JDialog 
public MyDialog(JFrame parent) 
{
    super.setLocationRelativeTo(parent); // this will do the job
}

换句话说,将jframe指针传递给对话框,并调用setlocationrelativeto(…);方法。

42fyovps

42fyovps2#

我通常调用以下方法:

dialog.setLocationRelativeTo(parent);

链接到javadocs

qybjjes1

qybjjes13#

你在说什么样的弹出对话框?如果您使用的是joptionpane或类似的东西,那么将其父组件设置为jframe,它将自动居中于jframe窗口的顶部。

JOptionPane.showMessageDialog(frame, "Hello, World!");

如果要创建自己的jdialog,可以使用jframe.getlocation()获取jframe的位置,使用jframe.getsize()获取其大小。从那开始,数学就很简单了;只需计算jframe的中心并减去jdialog宽度/高度的一半就可以得到对话框的左上角。
如果您的jdialog尚未呈现,jframe.getsize()可能会为您提供零大小。在这种情况下,可以使用jdialog.getpreferredsize()来确定它在屏幕上呈现后的大小。

ippsafx7

ippsafx74#

如果你想在窗口上有一个模态和居中的对话框。。。
在对话框的构造函数中:

class CustomDialog extends JDialog {
    public CustomDialog(Frame owner, String title, boolean modal) {
        super(owner, title, modal);
        setDefaultCloseOperation(WindowConstants.HIDE_ON_CLOSE);

        ...

        setSize(150, 100);
        setLocationRelativeTo(owner);
    }
}

显示对话框(使用按钮等):

public void actionPerformed(ActionEvent e) {
    dialog.setVisible(true);
}

相关问题