2011-11-21 14 views
6

मैंने addWindowListener की कोशिश की और windowClosing लागू किया, यह काम करता है, जब मैं बंद बटन दबाता हूं, लेकिन जब मैं Cmd+Q को बंद करने के लिए उपयोग करता हूं, तो windowClosing नहीं कहा जा रहा है, मैं इसे कैसे हल कर सकता हूं? क्या मुझे मुख्य श्रोता के माध्यम से विंडोज़ पर Cmd+Q मैक, Alt + F4 पर पता लगाने की आवश्यकता है? क्या यह विंडो बंद करने के लिए एक सामान्य श्रोता है, बंद बटन या कीबोर्ड के माध्यम से जो भी हो, या घटना Ctrl+Alt+Delete या Cmd+Option+Esc मारने पर ध्यान केंद्रित करने के लिए? धन्यवाद।जेएफआरएएम का पता लगाने के लिए कैसे बंद है?

+2

http://stackoverflow.com/questions/2061194/swing-on-osx-how -to-trap-command-q – dacwe

+0

http://www.leepoint.net/notes-java/GUI/containers/10windows/12frameclose.html –

+0

@TedWong क्या आपको अपनी समस्या का समाधान मिला? यदि आपने किया तो कृपया अपना उत्तर पोस्ट करें। – Igor

उत्तर

1

लगता है जैसे आपको कुछ KeyListeners और किसी विशेष ऑपरेटिंग सिस्टम के लिए इच्छित एक का पता लगाने के लिए एक कारखाना जोड़ने की आवश्यकता है।

Check Out

2

मुझे यकीन है कि क्या स्थिति Macs पर है नहीं कर रहा हूँ, लेकिन विंडोज पर आप बंद करें बटन से windowClosing() कॉलबैक मिलता है, Alt-F4; और यदि आप कार्य प्रबंधक के माध्यम से ऐप बंद करते हैं। यदि आप प्रक्रिया को मारने के लिए टास्क मैनेजर का उपयोग करते हैं तो आपको कॉलबैक नहीं मिलता है, लेकिन मैं वैसे भी उम्मीद नहीं करता।

आपको अपने जेएफआरएएम उदाहरण पर setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); पर कॉल करने के लिए याद किया गया है, है ना? com.apple.eawt.ApplicationListener

handleQuit(ApplicationEvent event) 

शायद चाल करना होगा:

1

आप इस OSX लाइब्रेरी का उपयोग कर सकते हैं।

डॉक्स से जानकारी:

जब आवेदन घटना छोड़ो भेज दिया जाता है कहा जाता है। यह घटना तब उत्पन्न होती है जब उपयोगकर्ता एप्लिकेशन मेनू से बाहर निकलता है, जब उपयोगकर्ता कमांड-क्यू टाइप करता है, या जब उपयोगकर्ता नियंत्रण डॉक में आपके एप्लिकेशन आइकन पर क्लिक करता है और छोड़ देता है। आप या तो छोड़ने के अनुरोध को स्वीकार या अस्वीकार कर सकते हैं।

बेशक यह समाधान विंडोज पर काम नहीं करेगा। जहां तक ​​मुझे पता है कि कोई सार्वभौमिक समाधान नहीं है, इसलिए यह शायद जाने का सबसे अच्छा तरीका है।

2

एक और तरीका है windowClosed() चीज़ विधि ओवरराइड करने का प्रयास करें। उम्मीद है कि यह आपके लिए काम करेगा।

+0

+1 उदाहरण http://stackoverflow.com/questions/7613577/java-how-do-i-prevent-windowclosing-from-actually-closing-the-window/7613768#7613768 – mKorbel

+0

यादृच्छिक अनुमान? – kleopatra

+0

@ क्लेओपेट्रा मेरे पास तीन बहुत ही समान पोस्ट हैं, हां आप सही हैं तो यादृच्छिक हैं ... – mKorbel

0

जैसा कि आपने कहा था कि जब आप (x) बटन पर क्लिक करते हैं तो विंडोक्लोसिंग को कॉल किया जाता है। उपयोग कर रहा है पर मैं एक मैक और जिस तरह मैं सीएमडी + Q आवेदन के लिए एक संकेत भेजने के लिए भी कर रहा हूँ Runtime.addShutDownHook

Runtime.getRuntime().addShutdownHook(new Thread() { 
    @Override 
    public void run() { 
     // code to run when CMD+Q is pressed 
    } 
} 
संबंधित मुद्दे