2011-02-03 15 views
9

मुझे एक्शन श्रोताओं का उपयोग करने और उन्हें लागू करने का विचार है, लेकिन मैं सोच रहा था कि कोई मुझे बता सकता है कि वे घटनाओं को कैसे सुनते हैं? क्या कोई तरह का मतदान तंत्र है?एक्शनलिस्टर कैसे काम करता है?

उत्तर

13

एक्शन श्रोताओं Observer pattern का उपयोग कर घटनाओं के लिए पंजीकरण करते हैं और उन्हें मुख्य ईवेंट लूप द्वारा सूचित किया जाता है, जिनके लिए वे पंजीकृत हैं। तो नहीं, यह एक मतदान (खींचें) तंत्र नहीं है, लेकिन विपरीत - एक (पुश) कॉलबैक। यह 'हमें कॉल न करें, हम आपको कॉल करेंगे' प्रोग्रामिंग का एक उदाहरण है। चूंकि आपके कोड में सब कुछ एक थ्रेड (ईवेंट लूप) से चलाता है, इसलिए आपको अलग-अलग ईवेंट के बीच सिंक्रनाइज़ करने की चिंता करने की आवश्यकता नहीं है - इसलिए आपका कोड थ्रेडसेफ है।

1

एक घटना लूप है जिसे एडब्ल्यूटी के मूल में लागू किया गया है। यह सभी घटनाओं को प्राप्त करता है और उन्हें उचित श्रोताओं को भेजता है।

1

ट्यूटोरियल बताते हैं कि कैसे वे काफी अच्छी तरह से काम करते हैं: http://download.oracle.com/javase/tutorial/uiswing/events/actionlistener.html

मुझे लगता है कि JComponent के यूआई कार्यान्वयन उपयोगकर्ता यह (मुझे लगता है कि) के साथ बातचीत पर (कॉल) को सक्रिय कर देगा सभी पंजीकृत घटनाओं।

उदाहरण के लिए, यदि कोई उपयोगकर्ता किसी JButton, बटन क्लिक करता है (या इसे ui, या कुछ अन्य आंतरिक हैंडलर है) सभी पंजीकृत ActionListeners देखने और उनके actionPerformed(...) तरीकों कॉल करेंगे जब।

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