#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.