आप फ्रेम निपटाने चाहिए बुला अपनी खिड़की श्रोता में निपटाने विधि लागू या setDefaultCloseOperation का उपयोग करके यह सुनिश्चित करना चाहिये। अंतिम के तर्क के लिए, आप दो विकल्पों का उपयोग कर सकते हैं:
DISPOSE_ON_CLOSE
या EXIT_ON_CLOSE
।
DISPOSE_ON_CLOSE
केवल फ्रेम संसाधनों का निपटान करें।
EXIT_ON_CLOSE
फ्रेम संसाधनों का निपटान करता है और फिर System.exit
का आह्वान करता है।
जब तक आपके पास कोई डिमन थ्रेड नहीं है तब तक दोनों के बीच कोई वास्तविक अंतर नहीं है। मैं DISPOSE_ON_CLOSE
का उपयोग करना पसंद करता हूं क्योंकि इस तरह से मैं नोटिस कर सकता हूं कि क्या मैं थ्रेड को समाप्त करना भूल गया हूं, क्योंकि यदि कोई और थ्रेड चल रहा है तो JVM बंद हो जाएगा। बिना किसी निपटारे के फ्रेम को बंद करने का कारण भी एप्लिकेशन को समाप्त नहीं करेगा, क्योंकि स्विंग उन घटनाओं को संभालने के लिए एक थ्रेड बनाता है जो केवल तब ही समाप्त हो जाती है जब निपटान किया जाता है।
मुझे कभी-कभी जावा से नफरत है।मेरी राय में यह डिफ़ॉल्ट व्यवहार होना चाहिए। –
ठीक है मुझे कारण मिला - दो अतिरिक्त एडब्ल्यूटी थ्रेड चल रहे हैं और यही कारण है कि "मुख्य" विधि समाप्त होने पर मेरा एप्लिकेशन समाप्त नहीं होता है। मैं हमेशा भूल जाता हूं कि जेएफआरम गैर-मॉडल है और उन धागे बनाता है। –
यह डिफ़ॉल्ट व्यवहार क्यों होना चाहिए? कई अनुप्रयोग कई खिड़कियां बनाते हैं। यदि वह डिफ़ॉल्ट था तो जब भी आप एक नई विंडो बनाते हैं तो आपको इसे बदलना होगा। – Herms