2008-11-19 11 views
5

मेरे पास "वसा" जीयूआई है जो काफी जटिल हो रहा है, और मैं किसी स्थान से दूसरे स्थान पर लिंक जोड़ना चाहता हूं, और नेविगेशन को आसान बनाने के लिए बैक/फॉरवर्ड बटन जोड़ना चाहता हूं। ऐसा लगता है कि अगर मेरा आवेदन पता योग्य था तो यह आसान होगा: प्रत्येक संयुक्त में यूआरआई हो सकता है, और लिंक उस यूआरआई का उपयोग करेंगे।आप स्विंग/जेएफएएस/एसडब्ल्यूटी जीयूआई को कैसे संबोधित करते हैं?

क्या इस समस्या के लिए डिजाइन पैटर्न लागू हैं?

मैं फ़ायरफ़ॉक्स या ग्रहण के लिए स्रोत कोड देख सकता हूं, लेकिन ये बड़ी परियोजनाएं हैं और इसमें काफी समय लगेगा, इसलिए मैं यहां पूछ रहा हूं। क्या कहीं कोई आसान उदाहरण है?

बेशक यह आसान होगा अगर मैंने पहली जगह में एक वेब ऐप बनाया था, लेकिन मैं जल्द ही इस विशाल ऐप को स्क्रैच से फिर से लिखने वाला नहीं हूं।

+0

तारीख के सभी उत्तर मानते हैं कि एक स्तर है, लेकिन "पेज" की ओर जाने वाले शीर्ष मेनू की कल्पना करें, फिर प्रत्येक पृष्ठ में टैब फ़ोल्डरों को घोंसला है। यूआरआई को प्रत्येक पृष्ठ और टैब आइटम की पहचान करने की आवश्यकता है। –

उत्तर

0

स्विंग में, आप CardLayout का उपयोग कर सकते हैं। आप प्रत्येक "पेज" एक कार्ड हो सकते हैं, और कार्ड का नाम (लेआउट में कार्ड जोड़ते समय चुना गया) यूआरआई के बराबर होगा।

उदाहरण:

String PAGE_1_KEY = "page 1"; 
String PAGE_2_KEY = "page 2"; 
// as many keys as you need 

JFrame frame = ...; 
frame.setLayout(new CardLayout()); 
frame.add(createPage1(), PAGE_1_KEY); 
frame.add(createPage2(), PAGE_2_KEY); 
// etc. 

फिर अपने बटन 'कार्रवाई श्रोताओं में, आप कहेंगे

((CardLayout)frame.getLayout()).show(frame, PAGE_1_KEY); // or whichever 
1

इस तरह की चीजों को करने के लिए मेरा समाधान आमतौर पर listener pattern शामिल है। संक्षेप में, आप इच्छुक पार्टियों (इस मामले में कंपोजिट) ​​से और उससे ईवेंट भेजने और प्राप्त करने का तरीका प्रदान करके युग्मन को कम करते हैं। यह पुन: स्थापित करने के बावजूद लागू करने के लिए काफी आसान है। इस तरह, आपकी घटनाएं और पार्टियां आश्रित कोड को बदले बिना बदल सकती हैं।

1

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

1

मेरे पिछले दृष्टिकोण वैश्विक प्रबंधक और लिंक के पंजीकरण शामिल थे। यूआई का प्रत्येक भाग अपने आप को विशिष्ट रूप से नामित करने और पंजीकरण करने में सक्षम था। वैश्विक प्रबंधक प्रत्येक के बारे में जानता है और फिर इस भाग को दृश्यमान लाने के लिए कुछ गंदे काम का उपयोग करें। बैक/फॉरवर्ड नेविगेशन विशेष पूर्ववत/पुनः प्रबंधक द्वारा किया गया था। प्रत्येक "प्रदर्शन" नेविगेशन प्रबंधक प्राप्त करने में सक्षम था और इसकी "पूर्ववत करें" घटना पंजीकृत करें। इसे काम करने के लिए कड़ी मेहनत थी, लेकिन परिणामी विशेषता काफी उपयोगी थी। हमने यूआई भागों को ढूंढने और नाम देने के लिए कुछ सरल जेएनडीआई सेवा का उपयोग करने के बारे में चर्चा की। यह भी जोड़ने में उपयोगी हो सकता है।

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