/ / कस्टम नियंत्रण में श्रोता को कैसे जोड़ा जाए? - जावा, स्वाट

कस्टम नियंत्रण में श्रोता कैसे जोड़ें? - जावा, स्विट

मैं अपने कस्टम में एक चयन श्रोता जोड़ना चाहता हूंनियंत्रण जिसमें कुछ बटन होते हैं ताकि जब भी किसी बटन को क्लिक किया जाए तो एक विशेष फ़ंक्शन को नियंत्रण द्वारा किया जाना चाहिए। समस्या यह है: मैं श्रोता को नियंत्रण में जोड़ना चाहता हूं और उसके प्रत्येक बच्चे के बटन पर व्यक्तिगत रूप से नहीं। मुझे क्या करना चाहिए?

उत्तर:

उत्तर № 1 के लिए 1

लेख से SWT का उपयोग करके अपनी खुद की विजेट बनाना:

SWT घटना तंत्र

SWT निम्न-स्तरीय श्रोता तंत्र प्रदान करता हैसामान्य जावा जावा श्रोताओं को टाइप करता है। प्रत्येक SWT विजेट ऐडलिस्टिस्ट (int EventType, Listener श्रोता) और InformListeners (इंट इवेंट टाइप, इवेंट इवेंट) को समझता है। EventType स्थिरांक वर्ग SWT में परिभाषित किए गए हैं। जब कोई घटना होती है, तो विजेट एक SWT ईवेंट ऑब्जेक्ट बनाता है जिसमें उपयुक्त प्रकार स्थिर होता है। InformListeners विधि श्रोता के लिए हैंडल (इवेंट ईवेंट) को कॉल करती है। यदि आपको किसी मौजूदा SWT ईवेंट का पुन: उपयोग करने की आवश्यकता है, तो आप आमतौर पर इस तंत्र का उपयोग करेंगे।

उदाहरण के लिए, यदि आपका विजेट एक चयन घटना को लागू करता है, तो आप अपने ’टाइप’ जोड़ सकते हैं और निम्नानुसार तरीके निकाल सकते हैं:

public void addSelectionListener(SelectionListener listener) {
addListener(SWT.Selection, new TypedListener(listener));
}

public void removeSelectionListener(SelectionListener listener) {
removeListener(SWT.Selection, listener);
}

जब आपके विजेट में, चयन घटना ’होती है (कहते हैं, जब चाइल्ड 1 का चयन किया जाता है), तो आप एप्लिकेशन के चयन श्रोताओं को अधिसूचितकर्ता का उपयोग करके सूचित करते हैं।

child1.addListener(SWT.Selection, new Listener() {
public void handleEvent(Event e) {
notifyListeners(SWT.Selection, new Event());
}
});

ध्यान दें कि जब हम श्रोता को जोड़ते हैं तो हम पहली बार लपेटते हैंयह एक टाइपिस्टलिस्ट में है। ऐसा इसलिए है क्योंकि TypedListener की संभाल (ईवेंट ईवेंट) विधि ईवेंट के प्रकार के आधार पर उपयुक्त टाइपराइंट उपवर्ग बनाता है, और फिर टाइप किए गए ईवेंट के लिए उपयुक्त विधि को कॉल करता है। इस तरह, एप्लिकेशन जावा टाइप किए गए श्रोताओं को विगेट्स में जोड़ सकते हैं, लेकिन विजेट कार्यान्वयन अधिक कुशल निम्न-स्तरीय श्रोता तंत्र का उपयोग कर सकते हैं। सुनिश्चित करें कि आपका विजेट कार्यान्वयन एक टाइप किए गए श्रोता एपीआई प्रदान करता है। एप्लिकेशन को निम्न-स्तरीय श्रोता विधियों को कॉल नहीं करना चाहिए। टाइप किए गए श्रोता तरीके आकस्मिक प्रोग्रामिंग त्रुटियों को रोकते हैं जैसे कि यह मानते हुए कि सभी विजेट सभी प्रकार की घटनाओं को संभाल सकते हैं, या यह कि इवेंट क्लास के सभी फ़ील्ड सभी घटनाओं के लिए मान्य हैं।