如何只退出我的子程序,而不是整个VM?

时间:2011-09-13 06:21:52

标签: java exit system.exit

我有一个Java swing启动程序来启动另一个类(运行它的main方法)。 每个程序都有取消按钮退出自己。

按下此取消按钮时,我使用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 个答案:

答案 0 :(得分:2)

System.exit()终止VM,因此您的初始线程也会终止,只需从main()方法返回。

在查看代码之后:并非所有类都应该具有main()方法(如果不是也单独使用)。您应该考虑调用构造函数来创建类的实例,并调用一个名为main()的方法。

答案 1 :(得分:2)

或者您可以使用dispose()方法代替System.exit(): - 因为System.exit()将终止自己的总申请。

或者您可以将setVisible()视为false。

答案 2 :(得分:2)

您必须实施WindowListener及其WindowEvents,示例here

另一个选项是setDefaultCloseOperation正确

答案 3 :(得分:1)

使用System.exit你不能。这将终止整个JVM及其中的所有进程。