【问题标题】:Application exits on closing of Jframe in java swing in netbeans 7.0应用程序在 netbeans 7.0 中的 java swing 中关闭 Jframe 时退出
【发布时间】:2011-05-13 14:15:55
【问题描述】:

我实际上是在开发 GUI 应用程序,当我运行这个应用程序时,会出现一个登录窗口 成功登录后,我有一个按钮,我有 MDI 申请表,里面有菜单 在菜单中,当我单击菜单项时,我有菜单项 Jframe 会打开到这里,我没问题

但是当我关闭 Jframe 表单时,整个应用程序都会退出

登录表格代码


public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {

            public void run() {
                new Login().setVisible(true);
            }
        });

按钮代码

 private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        // TODO add your handling code here:
         NewMDIApplication n = new NewMDIApplication();
         n.show();
         this.setVisible(false);


    }  

MDI申请表格代码

private void jMenuItem1ActionPerformed(java.awt.event.ActionEvent evt) {                                           
        // TODO add your handling code here:
        IVITEM i = new IVITEM();---- this is that form that opens inside the MDI appliaction
        i.show();
    }      

【问题讨论】:

  • "当我关闭 Jframe 表单时整个应用程序退出";关闭唯一的开放框架后,如果不退出,您希望应用程序做什么?

标签: java swing


【解决方案1】:

在 IVITEM 类中添加此代码

this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

并在主窗口的主菜单中添加菜单项“退出” 并在它的行动中使用

System.exit(0);

这将关闭所有子窗口

【讨论】:

  • +1。请注意,DISPOSE_ON_CLOSE 是在 WindowConstants 中定义的,而 JFrame 实现了它。
【解决方案2】:

在 JFrame 属性面板中,将 defaultCloseOperation 设置为 DISPOSE

【讨论】:

    【解决方案3】:

    您的登录表单表现为一个对话框,因此根本不应该是一个 JFrame,而是一个对话框窗口,例如 JDialog,更重要的是,应该是一个 modal 到主应用程序窗口(可能是 JFrame)。许多人没有意识到(我不知道这是否包括你)JDialogs 可以容纳复杂的 GUI,就像 JFrame 所拥有的一样复杂。

    【讨论】:

      猜你喜欢
      • 2011-12-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多