gpt4 book ai didi

java - 如何在 jdialog 中添加内部框架

转载 作者:行者123 更新时间:2023-12-01 15:53:59 26 4
gpt4 key购买 nike

我正在使用以下代码:

      JDialog d=new JDialog();
JInternalFrame i=new JInternalFrame("HI",false,false,false,false);
i.setPreferredSize(new Dimension(100,100));
d.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
d.setTitle("Wait dialog");
d.add(i);
d.pack();
d.setPreferredSize(new Dimension(100,100));
d.setLocation(300,300);
d.setAlwaysOnTop(true);
d.setVisible(true);

但是我得到的不是大小为 100*100 的 jdialog,而是一个具有默认宽度和高度的小窗口,为什么会发生这种情况?注意:我对 JFrame 做了同样的事情,并且得到了结果。但我希望它在 JDialog 上。

提前致谢

最佳答案

在向 JDialog 添加所有组件之后、使用 setVisible(true) 显示它之前,您需要在 JDialog 上调用 pack()。

在一个不相关的注释中,最好通过 JDialog 构造函数重载之一将 JDialog 与其父窗口(可能是 JFrame)关联起来。

编辑:您不想将 JInternalFrames 直接添加到 JDialog 或其他顶级窗口。相反,创建一个 JDesktopPane,设置其首选大小,将其添加到 JDialog 的 contentPane,然后将 JInternalFrame 添加到 JDesktopPane。

编辑 2:您还需要设置内部框架的大小和位置(setBounds 对此很有效)并在内部框架上调用 setVisible(true)。有关使用内部框架和桌面 Pane 的 Swing 教程将告诉您所有相关内容。

编辑 3:例如,

class testDialog {

public static void main(String[] args) {
JDialog d = new JDialog();
JDesktopPane desktoppane = new JDesktopPane(); // added
desktoppane.setPreferredSize(new Dimension(100, 100));// added
JInternalFrame i = new JInternalFrame("HI", false, false, false, false);
// i.setPreferredSize(new Dimension(100, 100));
i.setBounds(0, 0, 100, 100);// added
desktoppane.add(i);
i.setVisible(true);

d.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
d.setTitle("Wait dialog");
// d.add(i);
d.add(desktoppane); // added
d.pack();
// d.setPreferredSize(new Dimension(100, 100));
d.setLocation(300, 300);
d.setAlwaysOnTop(true);
d.setVisible(true);
}
}

关于java - 如何在 jdialog 中添加内部框架,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5443056/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com