Как я могу выйти только из моей подпрограммы, а не всей виртуальной машины? - PullRequest
5 голосов
/ 13 сентября 2011

У меня есть программа запуска свинг Java, чтобы запустить другой класс (работает его основной метод).Каждая программа имеет свою кнопку отмены, чтобы выйти сама.

Я использую System.exit(0); при нажатии этой кнопки отмены.

Программа запуска делает это в actionPerformed:

if (source==carMenuItem) {
    ta.append("Car launched\n");
    TestCar.main(par);

}
if (source==DialogboxMenuItem) {
    ta.append("Dialogbox launched\n");            
    DialogBox.main(par);
}        
if (source==LengthConversionMenuItem) {
    ta.append("LengthConversion launched\n");            
    LengthConversion.main(par);           
}

Когда я нажимаю кнопку отмены программы, он также закрывает мою программу запуска.Как я могу избежать этой ситуации?

Ответы [ 4 ]

2 голосов
/ 13 сентября 2011

вам нужно реализовать WindowListener и его WindowEvents, пример здесь

другой параметр - setDefaultCloseOperation правильно

2 голосов
/ 13 сентября 2011

Или вы можете использовать метод dispose() вместо System.exit(): -because System.exit() завершит само приложение.

или вы можете использовать setVisible() как ложное.

2 голосов
/ 13 сентября 2011

System.exit () завершает работу виртуальной машины, поэтому ваш исходный поток также прерывается, просто вернитесь из метода main ().

После просмотра вашего кода: не во всех классах должен быть метод main () (если он также не используется автономно). Вы должны рассмотреть возможность вызова конструктора для создания экземпляра класса и вызова метода без имени main ().

1 голос
/ 13 сентября 2011

С System.exit вы не можете. Это завершит работу всей JVM и всех процессов внутри нее.

...