开发者

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

开发者 https://www.devze.com 2023-04-04 23:22 出处:网络
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 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().


you have to implements WindowListener and its WindowEvents, example here

another option is setDefaultCloseOperation properly


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.


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

0

精彩评论

暂无评论...
验证码 换一张
取 消