2011-09-13 47 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。