【问题标题】:How to bind JDialog box and its corresponding JFrame (where the JDialog box was launched from)如何绑定 JDialog 框及其对应的 JFrame(JDialog 框的启动位置)
【发布时间】:2015-03-11 20:25:41
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: java swing netbeans jframe jdialog


    【解决方案1】:

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

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

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

    class MyDialog extends JDialog
    {
    
        public MyDialog(Frame frame)
        {
            super(frame);
        }
    }
    

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

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

    【讨论】:

    • 由于我使用的是 Netbeans IDE,因此对于每个屏幕,它都会创建一个单独的类,并扩展屏幕类型的类。就我而言,它创建了两个扩展类(JFrame 和 JDialog)。如您在此处建议的那样,我将如何实现这一目标?
    猜你喜欢
    • 2012-05-04
    • 2011-05-04
    • 2014-02-09
    • 2016-12-31
    • 1970-01-01
    • 2013-03-04
    • 2015-06-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多