Приложение завершает работу при закрытии Jframe в java swing в netbeans 7.0

#java #swing

#java #swing

Вопрос:

на самом деле я разрабатываю приложение с графическим интерфейсом, когда я запускаю это приложение, появляется окно входа в систему, на нем есть кнопка, когда после успешного входа у меня есть форма заявки 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);


    }  
  

Код формы MDIApplication

 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();
    }      
  

Комментарии:

1. «когда я закрываю форму Jframe, все приложение завершается»; после закрытия единственного открытого фрейма, что бы вы ожидали от приложения, если бы оно не завершалось?

Ответ №1:

в классе IVITEM добавьте этот код

 this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
  

и в главном меню в главном окне добавьте пункт меню «выход»
и в этом действии используется

 System.exit(0);
  

это закроет все дочерние окна

Комментарии:

1. 1. Обратите внимание, что DISPOSE_ON_CLOSE определено в WindowConstants, и что JFrame реализует его.

Ответ №2:

на панели свойств JFrame установите для параметра defaultCloseOperation по умолчанию значение DISPOSE

Ответ №3:

Ваша форма входа ведет себя как диалоговое окно и поэтому вообще не должна быть JFrame, а скорее диалоговым окном, таким как JDialog, и, более того, должна быть модальной по отношению к главному окну приложения (которое, вероятно, является JFrame). Многие не понимают (и я не знаю, включает ли это вас или нет), что JDialogs могут содержать сложные графические интерфейсы, такие же сложные, как и любой другой, поддерживаемый JFrame.