2012-01-16 10 views
6

के बीच ठीक से काम नहीं कर रहा है मेरे पास एक मुख्य जेफ्रेम वाला एक एप्लिकेशन है जिसमें एक डिफ़ॉल्ट सूची मॉडल है। मैं चाहता हूं कि अगर मैं इन अभिलेखों पर कुछ संशोधित करता हूं, तो दूसरा चल रहा एप्लिकेशन स्वचालित रूप से अपडेट हो जाता है।जावा ऑब्जर्वर और ऑब्जर्वेबल

अब तक मैं एक MainController वर्ग जो श्रोता को लागू करता है और अद्यतन विधि को अधिलेखित कर देता है:

public class MainController implements ActionListener, Observer { 
    public void update(Observable o, Object o1) {} 
} 

और एक साधारण वर्ग कि प्रत्यक्ष

public class Comanda extends Observable{} 

मेरे समस्या फैली हुई है अगर मैं किसी एक को हटाते कि पहले आवेदन से रिकॉर्ड, दूसरी सूची अद्यतन नहीं है। कार्यक्रम टेक्स्ट फ़ाइल से रिकॉर्ड हटा रहा है लेकिन डिफ़ॉल्ट सूची मॉडल को अपडेट नहीं कर रहा है। संपादन या जोड़ने के साथ एक ही समस्या है।

मैंने अद्यतन विधि में "reloadList()" जोड़ने का प्रयास किया, लेकिन यह काम नहीं करता है। विचार?

+0

यदि आप पर्यवेक्षकों की अधिसूचना शुरू करने के लिए अपना कोड दिखाते हैं तो यह उपयोगी होगा। ('पर्यवेक्षक'/'पर्यवेक्षण योग्य' वास्तव में 1.1 में बहिष्कृत किया जाना चाहिए था। मैं एकल वर्ग को कई कार्यों के बजाय अज्ञात आंतरिक कक्षाओं का भी उपयोग करता हूं।) –

+0

@ rhose87: * "... दूसरे चल रहे एप्लिकेशन को अपडेट करने के लिए" * [एसआईसी] ... आप ** दो अलग-अलग जावा एप्लिकेशन चला रहे हैं ** और उम्मीद है कि एक आवेदन में होने वाली कार्रवाई दूसरे में अधिसूचित की जा सकती है !? – TacticalCoder

+0

दूसरा चल रहा एप्लिकेशन? –

उत्तर

23

क्या आपने addObserver पर Comanda पर कॉल किया है और को Observer के रूप में जोड़ा है? साथ ही, जब परिवर्तन होता है तो आप setChanged और notifyObservers पर कॉल कर रहे हैं?

आपके द्वारा पोस्ट किए गए कोड को देखते हुए मैं देख सकता हूं कि आपने Observer और Observable ऑब्जेक्ट्स को एकसाथ वायर्ड नहीं किया है। जैसा कि मैंने कहा था, आपको addObserver पर अपने Observable ऑब्जेक्ट पर कॉल करना होगा, फिर अपने Observable ऑब्जेक्ट के भीतर, जब भी कोई परिवर्तन किया जाता है तो आपको setChanged पर notifyObservers पर कॉल करने की आवश्यकता होती है। केवल notifyObservers को update कहा जाता है जिसे Observer एस कहा जाता है जिसे जोड़ा गया है।

आप अपने प्रश्न है कि जब आप एक रिकॉर्ड को हटाने सूची को अपडेट नहीं करता है, जो मुझे लगता है कि Comanda शायद Object कि आप Observe करना चाहते हैं नहीं है बनाता में कहा। जो भी ऑब्जेक्ट यह है कि List रिकॉर्ड्स रिकॉर्ड है वह Observable होना चाहिए।

पर्यवेक्षक/पर्यवेक्षण पैटर्न पर कुछ और जानकारी के लिए this पर एक नज़र डालें।

+0

मैंने अपना पूरा कोड ऑनलाइन पोस्ट किया। कृपया इसे यहां देखें [http://www.endspace.com/file/uzeodq) –

2

जो आप करने की कोशिश कर रहे हैं उसे "इंटरप्रोसेस संचार" कहा जाता है - एक आवेदन से डेटा को दूसरे में भेजना। ऐसा करने के कई तरीके हैं; एक Google खोज आपको अधिक जानकारी देगी। Observable केवल एक ही आवेदन के भीतर काम करता है।

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