2011-09-13 14 views
5

मेरे पास एक और वर्ग लॉन्च करने के लिए जावा स्विंग लॉन्चर प्रोग्राम है (इसकी मुख्य विधि चल रहा है)। प्रत्येक प्रोग्राम में अपने आप से बाहर निकलने के लिए रद्द बटन है।मैं केवल अपने उप-कार्यक्रम से कैसे बाहर निकल सकता हूं, पूरे वीएम नहीं?

मैं इस रद्द बटन दबाए जाने पर 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

[रोकथाम एपीआई से System.exit()] (http://stackoverflow.com/ को मेरा उत्तर देखें लागू करता है करने के लिए है प्रश्न/5401281/रोकने-प्रणाली निकास-से-api/5401319 # 5401319)। –

उत्तर

2

System.exit() वीएम को समाप्त करता है इसलिए आपका प्रारंभिक धागा भी समाप्त हो जाता है, बस आपके मुख्य() विधि से वापस आ जाता है।

कोड की समीक्षा करने के बाद: सभी वर्गों में मुख्य() विधि नहीं है (यदि स्टैंडअलोन भी उपयोग नहीं किया जाता है)। आपको कक्षा का उदाहरण बनाने के लिए एक कन्स्ट्रक्टर को कॉल करने पर विचार करना चाहिए और मुख्य नाम (नाम) नामक विधि को कॉल करना चाहिए।

1

System.exit के साथ आप नहीं कर सकते हैं। यह पूरे जेवीएम और इसके अंदर की सभी प्रक्रियाओं को समाप्त कर देगा।

2

या आप dispose() विधि System.exit() के चरण में उपयोग कर सकते हैं: -क्यों System.exit() कुल एप्लिकेशन को स्वयं समाप्त कर देगा।

या आप setVisible() को गलत के रूप में उपयोग कर सकते हैं।

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^