2011-09-13 10 views
5

Tôi có chương trình trình khởi chạy xoay Java để khởi chạy một lớp khác (chạy phương thức chính của nó). Mỗi chương trình có nút hủy để thoát khỏi chính nó.Làm cách nào để thoát khỏi chương trình con, không phải toàn bộ VM?

Tôi sử dụng System.exit(0); khi nhấn nút hủy này.

Chương trình phóng thực hiện điều này trong 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);   
} 

Khi tôi bấm nút hủy của chương trình, nó cũng đóng cửa chương trình khởi chạy của tôi. Làm thế nào tôi có thể tránh tình trạng này?

+1

Xem câu trả lời của tôi để [Ngăn chặn System.exit() từ API] (http://stackoverflow.com/ câu hỏi/5401281/prevent-system-exit-from-api/5401319 # 5401319). –

Trả lời

2

System.exit() chấm dứt VM do đó chuỗi ban đầu của bạn cũng bị chấm dứt, chỉ cần trở về từ phương thức main() của bạn.

Sau khi xem xét mã của bạn: Không phải tất cả các lớp đều được yêu cầu phải có phương thức main() (Nếu không được sử dụng độc lập). Bạn nên xem xét để gọi một hàm tạo để tạo một thể hiện của một lớp và gọi một phương thức không có tên là main().

1

Với System.exit bạn không thể. Điều này sẽ chấm dứt toàn bộ JVM và tất cả các tiến trình bên trong nó.

2

Hoặc bạn có thể sử dụng phương pháp dispose() thay cho System.exit(): -bởi vì System.exit() sẽ chấm dứt toàn bộ đơn đăng ký đó.

hoặc bạn có thể sử dụng setVisible() làm sai.