सार: मैं बजाय स्थानीय स्तर पर की ग्रहण विंडो बिल्डर के कोड जनरेटर कॉन्फ़िगर करने के लिए initalize()
विधि में वर्ग शरीर में अपनी वस्तु संदर्भ जगह के लिए एक रास्ता तलाश कर रहा हूँ ।को नियंत्रित जहां जीयूआई वस्तुओं ग्रहण विंडो बिल्डर द्वारा बनाई गई के लिए संदर्भ रखा जाता है
विस्तृत:
विंडो बिल्डर एक कोड जनरेटर/कोड विश्लेषक जिसकी वजह से 'ग्राफ़िकल रूप डिजाइनर' और इसके विपरीत से जीयूआई कोड उत्पन्न कर सकते में बनाया गया है। जीयूआई को जल्दी से डिजाइन करने और जावा में विभिन्न ढांचे का काम करने के लिए यह बहुत अच्छा उपयोग है (विशेष रूप से जावा शुरुआती लोगों के लिए)। हालांकि, मुझे अधिक परिष्कृत जीयूआई सेटअप की ओर बढ़ते समय मेरे डिजाइन में जेनरेट कोड का उपयोग करने में परेशानी हो रही है। समस्या यह है कि अधिकांश जेनरेट कोड initialize()
विधि के अंदर रखा जा रहा है जो ऑब्जेक्ट को स्थानीय दायरे में निवासी बनाता है और 'बाहरी' से संदर्भ प्राप्त करने में कठोर बनाता है।
अब तक मैं किया गया है कॉपी/सार्वजनिक रूप में मैन्युअल वर्ग शरीर में initialize()
विधि से प्रकार घोषणाओं चिपकाने उन तक पहुंच के लिए, लेकिन यह किसी भी तरह गलत दृष्टिकोण लगता है। जब तक मैं ग्राफिकल डिजाइनर के भीतर से जीयूआई को पुनर्गठित नहीं करता तब तक यह ठीक काम करता है। उस स्थिति में कोड जनरेटर initialize()
विधि में फिर से इसकी घोषणाओं को प्रस्तुत करता है।
स्वचालित रूप से तैयार किए गए कोड इस तरह दिखता है:
// AUTO-GENERATED CODE
public class MyGUI {
private void initialize() {
// gui objects declared AND created in this scope by Window Builder
JFrame frame = new JFrame();
JPanel panel_1 = new JPanel();
frame.getContentPane().add(panel_1);
}
}
क्या मैं चाहते हैं: (उस पर दुर्लभ प्रलेखन)
public class MyGUI {
// accessible from outside
public Frame frame = null;
public JPanel panel_1 = null;
private void initialize() {
// gui objects only created in this scope
frame = new JFrame();
panel_1 = new JPanel();
frame.getContentPane().add(panel_1);
}
}
मैं एक समाधान के लिए दस्तावेज में तलाश रहे हैं, और विभिन्न विंडो बिल्डर वरीयताओं का भी अध्ययन किया लेकिन अब तक कोई भाग्य नहीं है। 'डेटा बाध्यकारी' है लेकिन ऐसा लगता है कि एमवीसी (गुई तत्वों को एक मॉडल में बांधें) और काफी अधिक मात्रा में लागू होता है।
क्या कोई डिज़ाइन पैटर्न है जो मुझे याद आ रहा है, या क्या मुझे किसी भी तरह initialize()
के स्थानीय दायरे से संदर्भों को 'मछली' करना चाहिए?
धन्यवाद, यह वही है जो मैं ढूंढ रहा था। क्या आप उस विषय को इंगित कर सकते हैं जहां यह दस्तावेज है। मैं डॉक्टर को देख रहा हूं, लेकिन इसे नहीं मिला। – count0
@ count0 विंडोबिल्डर प्रो उपयोगकर्ता मार्गदर्शिका> प्राथमिकताएं> स्विंग - आप पृष्ठ के बाईं ओर नेविगेट कर सकते हैं। मैं इसे अपने प्रश्न में संपादित करूंगा - मेरा इरादा सीधे इस पृष्ठ पर जाने का लिंक है। –