2009-01-12 6 views
7

मैं जो कुछ सुना है उससे थोड़ा उलझन में हूं, जावा घटनाओं को नहीं करता है।क्या जावा के पास घटनाओं के लिए देशी समर्थन है, सी # के समान?

लेकिन मुझे पता है कि यह जीयूआई कार्यक्रम करता है।

मैं कुछ याद आ रही है? क्या जावा में इवेंट हैंडलिंग तंत्र है?

मुझे पता है कि मैं एक प्रकाशक ग्राहक पैटर्न को कार्यान्वित कर सकता हूं, लेकिन मैं जावा के भीतर मूल समर्थन की तलाश में हूं।

मुझे जावा के बारे में कुछ याद रखना प्रतीत होता है या तो जावा 5 या 6 में ईवेंट जोड़ना, लेकिन मुझे याद नहीं है कि मैंने यह कहां सुना है और मैं इसे बना रहा हूं।

असल में मैं एक जावा क्लास में डिवाइस को लपेट रहा हूं, डिवाइस घटनाओं को फेंकता है, और मैं इसे उजागर करने का सबसे तार्किक तरीका ढूंढ रहा हूं। मैं ज्यादातर नेट नेट पृष्ठभूमि से आता हूं और मैं .Net (C#)

में किसी भी मदद की सराहना करता हूं।

उत्तर

14

जैसा कि आपने पहले ही कहा है, आप प्रकाशक-ग्राहक/पर्यवेक्षक पैटर्न के साथ एक ही चीज़ कर सकते हैं। यह सिर्फ थोड़ा और लेगवर्क की आवश्यकता है।

और नहीं, जावा के पास घटनाओं के लिए मूल समर्थन नहीं है, जैसे सी # प्रतिनिधियों के साथ करता है।

-1

आपको धागे की आवश्यकता है। जावा में जीयूआई में घटनाएं होती हैं, क्योंकि यूआई घटनाओं के प्रेषण के लिए एक समर्पित धागा होता है। वहाँ भी कुछ Calle "ऑब्जर्वर" और "प्रत्यक्ष" (इस जीयूआई सामान से घटना श्रोताओं का स्वाद तटस्थ संस्करण है) लेकिन सिर्फ डिजाइन पैटर्न है ...

1

मैं क्या जावा की याद से है (हेवन ' टी 6 महीने में इसके साथ काम किया), मुझे नहीं लगता कि घटनाएं हैं। नेट। आपकी सबसे अच्छी शर्त शायद प्रकाशक/ग्राहक पैटर्न का उपयोग करना होगा। इसे लागू करना और बहुत विश्वसनीय है।

0

स्विंग या AWT, जो जावा यूआई उपकरणकिटें कर रहे हैं, दोनों घटनाओं को संभालने - उदाहरण के लिए official Swing event tutorial की जाँच करें। इन घटनाओं के लिए श्रोताओं को पंजीकृत करने में सक्षम होने के लिए आपको स्विंग के पाठ्यक्रम में अपना यूआई लिखना होगा।

+0

मैं एक यूआई के साथ दुर्भाग्य से काम नहीं कर रहा हूँ विषय पर एक article है। –

+0

क्या इसका मतलब यह है कि किसी विशेष स्विंग ऑब्जेक्ट में प्रत्येक ईवेंट के लिए उनका एक अवलोकन योग्य पैटर्न मौजूद है? यह बहुत अनावश्यक कोड की तरह लगता है। प्रत्येक घटना के लिए एक ग्राहक/प्रकाशक का मतलब होगा। क्या यह संभव नहीं है कि एक सामान्य अवलोकन योग्य वर्ग हो और अस्थिर पैटर्न को लागू करने के लिए संरचना का उपयोग करें। –

0

के बारे में मैं सी # जानकार नहीं हूँ, लेकिन जावा बीन्स कि UI घटक नहीं हैं निश्चित रूप से घटनाक्रम का उपयोग कर राज्य में परिवर्तन के बारे श्रोताओं को सूचित कर सकते हैं:

http://java.sun.com/developer/onlineTraining/Beans/beans02/

यह जावा बीन्स का हिस्सा रहा है यह बाद से विशिष्ट जानकारी पहले बाहर आया। ट्यूटोरियल की तारीख पर ध्यान दें: यह पुराना 2000 है।

स्रोत और श्रोता को एक ही JVM में चलाना होगा। आपको किसी अन्य JVM में चल रहे किसी चीज़ के साथ संवाद करने के लिए प्रॉक्सी का उपयोग करना होगा, लेकिन यह किया जा सकता है।

मैं सी # घटनाओं के ट्यूटोरियल के लिए Googled और this पाया। जावा के श्रोताओं के पंजीकरण और संपत्ति की गोलीबारी में बदलावों ने घटनाओं को याद किया जब मैंने सी # ट्यूटोरियल को स्किम किया। क्या मुझे कुछ महत्वपूर्ण याद आया? (मैं मानता हूँ कि मैं गहराई से पढ़ा नहीं था -। अभी कुछ ही समय)

0

जावा में कोई मूल समर्थन नहीं है - आप Observer Pattern लागू करने के लिए (उर्फ सदस्यता लें/प्रकाशित) होगा। इसकी बहुत सीधी आगे - कोड की एक दर्जन से अधिक लाइनें नहीं।

4

यहां दूसरों द्वारा प्रस्तावित सदस्यता/प्रकाशित तंत्र आपको सिंक्रोनस ईवेंट लागू करने देगा। एसिंक्रोनस इवेंट लूप्स (आग और भूलना) के लिए आप "अभिनेता" देखना चाह सकते हैं। एक Actor<A> में प्रकार ए के संदेशों (घटनाओं) के लिए एक हैंडलर है, साथ ही हैंडलर को निष्पादित करने के लिए एक थ्रेडिंग रणनीति भी शामिल है।

public class EventExample { 
    public static void main(String[] args) { 
    while ((char c = System.in.read()) >= 0) { 
     eventHandler.act(c); 
    } 
    } 

    public static Actor<Character> eventHandler = 
    Actor.actor(Strategy.simpleThreadStrategy(), new Effect<Character>() { 
     public void e(Character c) { 
     // Do something with c here. 
     } 
    }); 
} 

Get the actors library here. See the Javadoc here.

0

तुम भी खुला स्रोत EventBus पुस्तकालय है, जो, इसके विपरीत मानक प्रकाशक को/पर एक नज़र लेने के लिए चाहते हो सकता है: यह आपको समवर्ती, अतुल्यकालिक घटना के बाद की तरह से निपटने है की सुविधा देता है ग्राहक पैटर्न प्रकाशक/ग्राहक पैटर्न में आवश्यक तंग युग्मन को कम करने के लिए मध्यस्थ वर्ग (ईवेंट बस) का उपयोग करता है (जहां ग्राहकों को उन सभी रजिस्टररों के बारे में पता होना चाहिए जो उन्हें पंजीकृत करने के लिए, जो हमेशा संभव नहीं होता है और अक्सर बोझिल होता है)।

मैंने इसे जीयूआई अनुप्रयोगों में उपयोग किया है लेकिन यह किसी भी प्रकार की घटना से निपट सकता है।

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