Java 如何绑定JDialog box及其对应的JFrame(JDialog box的启动位置)

Java 如何绑定JDialog box及其对应的JFrame(JDialog box的启动位置),java,swing,netbeans,jframe,jdialog,Java,Swing,Netbeans,Jframe,Jdialog,在使用Netbeans IDE开发java桌面应用程序时,我遇到了一个奇怪的问题 情况如下: 有一个JFrame。它有一个按钮,可以启动JDialog对话框。一旦JDialog box启动,JFrame将被禁用以进行编辑。现在我在屏幕上打开了JFrame和JDialog框。 只需按Windows+D直接进入桌面,然后单击任务栏上的java应用程序图标。您可以看到现在将显示JFrame。您甚至无法编辑它,因为我在打开JDialog box时禁用了它。此时,我的应用程序似乎挂起并停止工作。只有在按下

在使用Netbeans IDE开发java桌面应用程序时,我遇到了一个奇怪的问题

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

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


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

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

JFrame frame = new JFrame();
//....
JDialog dialog = new JDialog(frame);
编辑:在您提到的注释中,Netbeans创建了JDialog的一个子类。向扩展JDialog的类添加一个Frame类型的参数,如下所示:

class MyDialog extends JDialog
{

    public MyDialog(Frame frame)
    {
        super(frame);
    }
}
通常在框架中创建MyDialog实例的地方,现在可以执行以下操作:

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

因为我使用的是Netbeans IDE,所以对于每个屏幕,它都会创建一个单独的类,并扩展屏幕类型的类。在我的例子中,它创建了两个扩展类(JFrame和JDialog)。我将如何实现你在这里提出的目标?