जावा स्विंग ऐप में विंडो प्रबंधन के लिए डिज़ाइन पैटर्न


9

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

मुझे यकीन नहीं है कि कार्यक्षमता बनाने का सबसे अच्छा तरीका क्या है। एक तरीका यह होगा कि मुझे JFrameएक तर्क के रूप में पारित किया जाए ... हर दूसरे घटक के बारे में, लेकिन यह मेरे लिए हैकी है। या, प्रत्येक पैनल को एक्शन श्रोता के रूप में डबल बना रहा है, लेकिन यह सही नहीं लगता है।

क्या एक डिज़ाइन पैटर्न है जिसे मुझे यहाँ लागू करना चाहिए? "मुख्य और केवल - विंडो की सामग्री को बदलें" एक सामान्य रूप से सामान्य ऑपरेशन होना चाहिए। पैटर्न के लिए एक नाम पर्याप्त होगा; मैं वहां से अपने दम पर Google का उपयोग कर सकता हूं। (मैं अब स्पष्टीकरण के लिए नहीं कहूंगा, हालांकि।)


यह वास्तविक प्रोग्रामिंग तकनीकों के बारे में एक सवाल है, तो आपको संभवतः स्टैक ओवरफ्लो पर बहुत अधिक उत्तर मिलेंगे।
एलेक्स फीमिन

जवाबों:


6

स्विंग ऐप्स का निर्माण करते समय, मैं आमतौर पर इसे मध्यस्थ पैटर्न पर आधारित करता हूं। इस पैटर्न में, एक मध्यस्थ वर्ग (आमतौर पर मुख्य JFrame) विभिन्न GUI भागों (आमतौर पर JPanels, JMenus ...) को संभालता है और उनके बीच संचार का ख्याल रखता है।

उदाहरण के लिए, यदि कोई घटना JPanel1 में हुई है, JPanel1 मध्यस्थ (JFrame) को सूचित करता है। JFrame तब JPanel2 को संशोधित करके कार्रवाई करता है।

FYI करें: मेरे सभी प्रोजेक्ट्स छोटे-से-मध्यम GUI ऐप थे, इसलिए मुझे यकीन नहीं है कि यह पैटर्न अच्छी तरह से तैयार होगा। लेकिन अगर आप एक पर्याप्त वास्तुकला डिजाइन कर सकते हैं, तो मध्यस्थ पैटर्न एक ठोस आधार हो सकता है।


4

आपके पास मुख्य विधि एक JDialog प्रदर्शित हो सकती है। जब संवाद बंद हो जाता है, तो मुख्य JFrame बनाया और प्रदर्शित किया जाता है।

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

कुछ पुराने UI फ्रेमवर्क के विपरीत, एक स्विंग एप्लिकेशन एक विशिष्ट फ्रेम या विंडो से बंधा नहीं है। आप जितनी चाहें उतनी विंडो बना सकते हैं। सभी थ्रेड समाप्त होने पर अनुप्रयोग समाप्त होता है, न कि जब सभी विंडोज़ का निपटान किया गया हो। यह आमतौर पर System.exit (0) के साथ हासिल किया जाता है।

मुझे नहीं पता कि उस मामले के लिए कोई विशिष्ट डिज़ाइन पैटर्न है या नहीं। मैं जावा स्विंग ट्यूटोरियल की सलाह देता हूं।


1
-1। यह एक डिज़ाइन पैटर्न प्रश्न है। मुझे दिए गए चश्मे को बदलने की सिफारिश करने और "मुझे नहीं पता कि क्या कोई विशिष्ट डिज़ाइन पैटर्न है" इसका जवाब नहीं देता है।
पोप

2
उसका उत्तर बहुत सटीक है। आपके पास डिज़ाइन पैटर्न की समस्या नहीं है, आपको यह जानने की ज़रूरत है कि पहले कैसे फ़ॉर्म और संवाद काम करते हैं।
एलेक्स

2

कई UI फ्रेमवर्क में 'मुख्य' या 'सक्रिय' विंडो के संबंध में अलग-अलग नियम हैं। उस जटिलता को प्रबंधित करने का एक तरीका आपकी मुख्य खिड़की है, जो मुख्य संदेश लूप को नियंत्रित करता है, एक अदृश्य (या छोटा, गुणहीन 1 पिक्सेल एक, विशेष रूप से कष्टप्रद रूपरेखाओं के लिए ऑफ स्क्रीन) होने के लिए। उसके बाद अन्य सभी विंडो और डायलॉग्स उस विंडो का एक बच्चा होना चाहिए।

इस विधि के कई फायदे हैं, विशेष रूप से जब वैश्विक कीक्लिक्स और माउस घटनाओं के साथ-साथ शीर्ष-स्तरीय लॉगिंग और अपवाद हैंडलिंग में काम करते हैं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.