【问题标题】:Java swing "children" windowsJava swing“子”窗口
【发布时间】:2011-01-06 00:36:23
【问题描述】:

对不起,这个问题很简单,但我无法在网上找到任何东西,可能是因为我不知道要查找的正确术语。

当您有一个桌面应用程序时,有许多所谓的子窗口:一个用于选项,一个用于“关于”等等。如何在 Java Swing 中制作它们(使用 NetBeans 工具 - 可选)?

到目前为止,我刚刚创建了另一个 JFrame,并在相关事件中以与 Main 函数启动相同的方式打开它,嗯,主 JFrame。但是这种方法有问题:当我通过右上角的 x 关闭子窗口时,整个程序终止,就好像我正在关闭主窗口一样。这可能是因为 NetBeans 为 x 自动生成代码,我可以在某处找到并更改它......但我仍然觉得必须有一种更简单的正确方法来添加子 JFrame(或 JPanel 或任何用于子窗口的东西) ;)

【问题讨论】:

    标签: java swing desktop-application


    【解决方案1】:

    ...但是这有问题 方法:当我通过关闭子窗口时 x 在右上角,整体 程序终止,好像我正在关闭 主窗口。 ...

    好吧,我想说你走在正确的道路上。只需确保为您的子框架执行以下操作:

    frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    

    然后关闭子窗口不会关闭整个应用程序。

    HTH! ;-)

    【讨论】:

      【解决方案2】:

      您是指一个对话框窗口(请参阅How to Make Dialogs),您可能希望模态阻止用户对程序中所有其他窗口的输入(请参阅An Overview of Dialogs)?

      【讨论】:

      • 不完全是。我的意思是类似于选项窗口。 IE。 Firefox 首选项窗口。除非它也被称为对话窗口。
      【解决方案3】:

      进入框架设计模式 -> 选择你的框架 -> 在属性中,第一个选项。选择Dispose on close

      如果没有看到道具:Ctrl + Shift + 7Window (in the frame menu) -> Properties

      【讨论】:

        【解决方案4】:

        如果您创建框架,它们不会被视为子窗口。您不能像 JDialog 那样为它们设置所有者。如果您确实想创建另一个 JFrame,则必须设置关闭操作

        frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        

        而不是

        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  
        

        EXIT_ON_CLOSE 操作将调用 System.exit(0); 这将终止 JVM。请记住,如果您的主 JFrame 设置为 DISPOSE_ON_CLOSE 那么您必须确保所有其他框架都已正确处理,否则在处理完毕之前它不会退出。

        【讨论】:

        • 谢谢大家 ;) 太糟糕了,我不能正式接受一个以上的答案,所有的答案都很有帮助 :)
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-01-14
        • 2013-10-16
        • 2021-08-10
        • 2010-10-11
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多