2012-05-08 18 views
7

के रूप में सार तत्व क्रिया क्रियाओं के उपयोग से मैं अपने जीयूआई अनुप्रयोग में राज्य से कार्य को अलग करने की कोशिश कर रहा हूं। मैं मेनू आइटम और बटन बनाने के लिए इनका उपयोग करने में सफल रहा हूं जिनकी समान कार्यक्षमता है।विंडोलिस्टर

मेरी समस्या यह है: मैं अपने मेनू में 'बाहर निकलने' आइटम और फ्रेम के करीबी बटन दोनों के लिए एक ही क्रिया करना चाहता हूं।

वर्तमान में मैं फ्रेम के लिए निम्न WindowListener जोड़कर इसे हल कर लिया है:

private class MainWindowListener extends WindowAdapter { 
    @Override 
    public void windowClosing(WindowEvent e) { 
     new ExitAction(model).actionPerformed(new ActionEvent(e.getSource(), e.getID(), "Exit")); 
    } 
} 

वहाँ यह करने के लिए एक सरल और अधिक सरल रास्ता नहीं है?

उत्तर

6

फ़ॉरवर्डिंग ईवेंट आसान है, लेकिन आप का उपयोग भी कर सकते हैं, जैसा कि here दिखाया गया है।

परिशिष्ट: Action का उपयोग करने वाले अधिक उदाहरण नीचे दिखाए गए हैं।

  • LinePanel जो बटन और चाबियाँ जोड़ता है।
  • ScrollAction जो मौजूदा स्विंग कार्यों का लाभ उठाता है।
  • KeyPadPanel जो अग्रेषण कार्यों को दर्शाता है।
  • GraphPanel जो एक टूल बार में ग्राफ संपादक क्रियाएँ दिखाता है।
+0

इससे संबंधित एक दृष्टिकोण के लिए एक बटन के 'doClick()' विधि आह्वान करने के लिए, के रूप में [यहां] से पता चला है (http://stackoverflow.com/a/5797965/230513)। – trashgod

+0

यह बात मेरे लिए कुछ नया है, और काफी रोचक है :-) –

+0

तो, अगर मैं इसे सही ढंग से समझता हूं, तो dispatchEvent() का उपयोग करके मैं जो कर रहा हूं उसके विपरीत है: कोड को विंडोलिस्टर में रखना कार्रवाई, और कार्रवाई करने के बजाय कार्रवाई करने के बजाय कार्रवाई लिस्टनर कार्रवाई के लिए एक घटना भेजते हैं? दिलचस्प ... – FinalArt2005