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.
精彩评论