2011-09-13 22 views
5

我有一个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);   
} 

当我按下程序的取消按钮,它也将关闭我的启动程序。我怎样才能避免这种情况?

+1

见我的答案为[防止从API System.exit()的(http://stackoverflow.com/问题/ 5401281 /预防系统 - 退出从-API/5401319#5401319)。 –

回答

2

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

检查完代码后:并非所有类都应该有main()方法(如果不是也可以单独使用)。你应该考虑调用一个构造函数来创建一个类的实例并调用一个不叫做main()的方法。

1

用System.exit你不行。这将终止整个JVM及其内部的所有进程。

2

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

或者您可以使用setVisible()作为false。