Как я могу выйти только из моей подпрограммы, а не из всей ВМ?

У меня есть программа запуска Java Swing для запуска другого класса (с его основным методом). У каждой программы есть кнопка отмены для выхода.

Я использую 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);           
}

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


person hkguile    schedule 13.09.2011    source источник
comment
См. Мой ответ на Предотвращение System.exit () из API.   -  person Andrew Thompson    schedule 13.09.2011


Ответы (4)


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

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

person stacker    schedule 13.09.2011

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

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

person mKorbel    schedule 13.09.2011

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

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

person Community    schedule 13.09.2011

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

person Daniel    schedule 13.09.2011