मुझे आश्चर्य है कि SwingWorker
को मेरे मुख्य जीयूआई में घोंसला वाला वर्ग होना है। मैं अपने किसी भी प्रोग्राम तर्क से जीयूआई को स्पष्ट रखने के लिए इसे बाहरी कक्षा बनाना चाहता हूं।क्या स्विंगवर्कर को घोंसला वाला वर्ग होना चाहिए?
मैंने SwingWorker
कक्षा बाहरी बनाने की कोशिश की, जो प्रक्रिया के लिए ठीक काम करता है, दुर्भाग्य से मैं स्विंगवर्कर वर्ग से अपने किसी भी जीयूआई फ़ील्ड तक नहीं पहुंच सकता। जब भी मैं किसी विशेषता को एक्सेस करने का प्रयास करता हूं, जैसे लेबल या स्विंगवर्कर के done()
विधि से जो भी हो, मुझे एक nullPointer अपवाद मिलता है।
कोई सलाह बहुत सराहना की जाएगी!
सबसे पहले धन्यवाद जेफ! अब तक ठीक काम करता है, भले ही मैं आपके द्वारा प्रस्तुत दूसरे विकल्प पर आपका अनुसरण नहीं कर सका। मेरे पृष्ठभूमि कार्यों में से एक एक निश्चित आकार (लंबी मान) की गणना करता है, इसलिए मेरे जीयूआई से वह मूल्य प्राप्त करना अच्छा लगेगा।
आपने गेटर्स और सेटर्स के साथ काम करने का सुझाव दिया लेकिन दुर्भाग्य से मुझे यह नहीं पता कि स्विंगवर्कर वर्ग में उन्हें कैसे कार्यान्वित किया जाए।
मैं इसे इस तरह की कोशिश की:
public void setSize(long totalSize) {
this.totalSize = totalSize;
}
public long getTotalSize() {
return totalSize;
}
सेटर doInBackground()
विधि के अंत में शुरू हो जाती है। दुर्भाग्य से मैं अपने जीयूआई से get()
विधि का उपयोग नहीं कर सकता।
final MySwingWorker w = new MySwingWorker();
Runnable r = new Runnable() {
public void run() {
// do something with w.get()
}
};
w.setRunnable(r);
w.execute();
"डब्ल्यू" की वस्तु निर्माण मेरे मामले में काम नहीं करता है के रूप में निर्माता Runnable की एक वस्तु की आवश्यकता है। क्या मुझे कुछ याद आ रही है? कृपया मेरे लिए आसान हो जाएं, यह पहली बार है जब मैं स्विंगवर्कर के साथ काम करता हूं। :) फिर, आपकी मदद के लिए बहुत बहुत धन्यवाद!
रननेबल के बजाय निर्माता को केवल लेबल में पास करना भी संभव होगा। प्रत्येक छोटी कार्रवाई के लिए एक नए कार्यकर्ता उप-वर्ग को परिभाषित करना शायद अधिक होगा। बेनामी कक्षाएं एक बहुत छोटी, कसकर युग्मित वस्तु को एक साथ रखने की इस विशेष समस्या को हल करने के लिए बहुत अच्छी हैं। –
यह वास्तव में निर्भर करता है कि यह एक एकल उपयोग केस है। अमूर्त कार्य करता है यदि आप इसे कई स्थानों पर कर रहे हैं। ओह कैसे बंद मददगार होगा। –