简体   繁体   中英

How can I exit only my sub-program, not the whole VM?

I have a Java swing launcher program to launch another class (running its main method). Each program has its cancel button to exit itself.

I use System.exit(0); when this cancel button is pressed.

The launcher program does this in 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);           
}

When I press the program's cancel button, it also closes my launcher program. How can I avoid this situation?

System.exit() terminates the VM therefore your initial thread is terminated also, simply return from your main() method.

After reviewing you code: Not all classes are supposed to have a main() method (If not also used standalone). You should consider to call a constructor to create an instance of a class and call a method not named main().

Or you can use dispose() method in stead of System.exit() :-because System.exit() will terminate the total application it self.

or you can use setVisible() as false.

you have to implements WindowListener and its WindowEvents , example here

another option is setDefaultCloseOperation properly

With System.exit you can't. This will terminate the whole JVM and all processes inside it.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM