如何绑定 JDialog 框及其对应的 JFrame(JDialog 框从哪里启动)

How to bind JDialog box and its corresponding JFrame (where the JDialog box was launched from)

我在使用 Netbeans IDE.

开发 java 桌面应用程序时遇到了一个奇怪的问题

场景如下: 有一个 JFrame。它有一个按钮,可以启动 JDialog 框。一旦 JDialog 框启动,JFrame 将被禁用以进行编辑。现在我在屏幕上打开了 JFrame 和 JDialog 框。 只需按 Windows+D 直接转到桌面,然后单击任务栏上的 java 应用程序图标。您可以看到现在将显示 JFrame。您甚至无法编辑它,因为我在打开 JDialog 框时禁用了它。此时,看起来我的应用程序已挂起并停止工作。只有按下Alt+Tab键后,你才能发现已经打开了对应这个画面的弹窗。

现在我的问题是:有什么方法可以将这两个屏幕(JFrame+JDialog)粘在一起,这样即使在按下 Windows+D 然后单击任务栏上的图标后,两个屏幕也应该同时打开.

希望我解释清楚我的疑问。

将 JFrame 传递给 JDialog 构造函数以将其设置为其父级。

JFrame frame = new JFrame();
//....
JDialog dialog = new JDialog(frame);

编辑:在您提到的评论中,Netbeans 创建了 JDialog 的子class。将类型为 Frame 的参数添加到 class 扩展 JDialog,如下所示:

class MyDialog extends JDialog
{

    public MyDialog(Frame frame)
    {
        super(frame);
    }
}

通常在框架中创建 MyDialog 实例的地方,现在可以执行以下操作:

MyDialog dialog = new MyDialog(this);
//.... 
dialog.setVisible(true);