2009-02-12 14 views
10

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

मेरा प्रश्न है: क्या ग्रुपलाउट की बहुत अच्छी समझ हो रही है और हाथ से कोडिंग (और इसलिए मेरे जीयूआई पर अधिक नियंत्रण है) या बस जारी है?

उत्तर

11

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

और निश्चित रूप से, हाथ से GroupLayout का उपयोग करने का तरीका सीखना आपके लिए अन्य लेआउट मैनेजर जावा ऑफ़र में किसी भी अन्य संक्रमण में बदलाव करना आसान बनाता है, जो बदले में सरल कोड और यहां तक ​​कि अधिक समय बचा सकता है।

+0

मैं भी यह सोच रहा हूं; मैं ऐसी परिस्थिति में हो सकता हूं जहां मेरे पास नेटबीन से कोड कॉपी करने की सुविधा न हो, लेकिन जहां मुझे अपेक्षाकृत जटिल जीयूआई बनाने की आवश्यकता है - और ऐसे मामलों में जहां मुझे एक सरल जीयूआई बनाना है, मुझे नेटबीन की ओर मुड़ने की ज़रूरत नहीं है , बल्कि इसे एक सरल लेआउट प्रबंधक पर बनाएं। – Ciaran

10

GroupLayout वास्तव में हाथ कोडिंग के लिए डिज़ाइन नहीं किया गया था; यह किसी अन्य लेआउट मैनेजर की तुलना में बहुत अधिक वर्बोज़ है (संभवतः GridBagLayout को छोड़कर)। चूंकि आप कहते हैं कि आप स्विंग के लिए नए हैं, मैं बुनियादी लेआउट प्रबंधकों (BorderLayout और FlowLayout) से शुरू करने का सुझाव देता हूं; आप पैनल या फ्रेम पर राइट-क्लिक करके और "सेट लेआउट" चुनकर नेटबीन में उनका उपयोग कर सकते हैं। उनसे परिचित होने के बाद, मेरा सुझाव है कि आप MiGLayout देखें।

अपने अन्य प्रश्न का उत्तर देने के लिए: मुझे नेटबीन फॉर्म डिज़ाइनर के बारे में कैलकुलेटर के समान लगता है; यदि आप पहले से ही मूल बातें जानते हैं, तो यह एक अद्भुत टूल है, लेकिन यदि आप इसे क्रैच के रूप में उपयोग करते हैं तो आप कभी भी कुछ नहीं सीखेंगे।

+0

मुझे लगता है कि SpringLayout और भी verbose है। ;) मैंने ग्रुपलाउट का उपयोग किया है जो एलडब्ल्यूयूआईटी के साथ आता है और यह बहुत बुरा नहीं था, लेकिन आसान नहीं था। मुझे JGoodies FormLayout पसंद आया, और चूंकि मिग लेआउट इसके उत्तराधिकारी हैं, इसलिए मैं गर्मजोशी से मिग की सलाह देता हूं। वैसे भी, बुनियादी लेआउट भी जानना अच्छा होता है। –

+0

मैं पहले से ही सीमा-रेखा से परिचित हूं - लेकिन व्यावहारिक रूप से ग्रुपलाउट वह है जो मुझे लगता है कि मैं वर्तमान में जिस एप्लिकेशन को बना रहा हूं उसके लिए सबसे अच्छा है। नेटबीन को क्रैच के रूप में उपयोग करने के लिए - मुझे केवल आईडीई पसंद नहीं है और इसे कुछ हिस्सों में अनावश्यक रूप से अधिक जटिल लगता है – Ciaran

1

अधिक जटिल लेआउट प्रबंधकों को हाथ से कोडित करने के लिए नहीं हैं। आप इसे कर सकते हैं, लेकिन आपको अब से कुछ महीने पहले अपने स्वयं के लेआउट को समझने में परेशानी होगी। GroupLayout कोई अपवाद नहीं है, बदतर यह सहज नहीं है, आपको अपने दिमाग को GroupLayout शर्तों में अपना लेआउट मजबूर करना होगा।

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

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

+2

http://madbean.com/anim/totallygridbag/ –

+4

-1 ग्रुपलाउट मेरे लिए बहुत सहज महसूस करता है। निश्चित रूप से, यह वर्बोज़ है, लेकिन यह जावा है जिसके बारे में हम बात कर रहे हैं। बस प्रलेखन पढ़ें, और [इस उदाहरण] का पालन करें (http://download.oracle.com/javase/tutorial/uiswing/layout/group.html)। इसके बाद, इसे "वास्तविक जीवन" जीयूआई परियोजनाओं पर उपयोग करना शुरू करें। मुझे लगता है कि आप पाएंगे कि यह वास्तव में बुरा नहीं है जैसा कि पहले दिखता है। – bcat

+2

-1 मैं @bcat से सहमत हूं। मैं अंतिम पैराग्राफ में सलाह के लिए सीधी समस्या भी लेना चाहूंगा। सर्वोत्तम परिणाम हमेशा निपुणता से आते हैं जो दो घंटे से अधिक समय लेता है। जब तक मैं इसका उपयोग जारी रखता हूं तब तक मैं कभी भी 'GroupLayout' का उपयोग कैसे करना भूलूंगा। मैं यह भी समझ नहीं पा रहा हूं कि 'समूहलाइट' संभवतः ** नेस्टेड कंटेनर ** का उपयोग करने से कहीं अधिक जटिल हो सकता है। अगर मैं इसे जटिल बनाने के लिए कहता हूं तो मैं ऐसा करता हूं। –

3

GroupLayout प्रोग्रामेटिक रूप से उपयोग करने के लिए सीखने लायक है।

मैं GroupLayout का उपयोग करता हूं जो लगभग हर पैनल पर मेरा डिफ़ॉल्ट लेआउट है जो मानक स्विंग घटकों का उपयोग करता है। मुझे लगता है कि परिणाम हमेशा आंखों के लिए बहुत ही सुखद होते हैं और बहुत अच्छी तरह से आकार बदलते हैं।मैं हमेशा ये विकल्प सेट:

groupLayout.setAutoCreateGaps(true); 
groupLayout.setAutoCreateContainerGaps(true); 

इस लेआउट बार-बार केवल नहीं दिया है मुझे बढ़िया दिखने लेआउट का उपयोग करना है, लेकिन यह मुझे एक साथ की संख्या के साथ कुछ जटिल पैनलों डाल करने के लिए सक्षम होने के लिए आवश्यक निम्न स्तर के अनुभव देता है संकलन समय पर अज्ञात घटक। मुझे यह भी पता चलता है कि जब घटकों की संख्या गतिशील होती है, तो मैं सभी घटकों को बाहर रख सकता हूं और फिर क्षैतिज और ऊर्ध्वाधर समूहों को पुनर्निर्मित किए बिना setVisible(boolean) के साथ उन्हें चालू और बंद कर सकता हूं।

0

यदि आप वीबी प्रोग्राम स्टाइल के इच्छुक हैं तो आप ग्रुपलेआउट पर समय बिताते हैं। अन्यथा उपयुक्त उदाहरणों के साथ ग्रिडबैगआउट प्रबंधक को समझने का प्रयास करें। यह उन लोगों के लिए सबसे अच्छा है जो चाहते हैं कि प्रत्येक गुई घटक हमारे कलम नियंत्रण में होना चाहिए (हमें आईडीई लिखना चाहिए और नहीं)। एक अच्छे जावा डेवलपर को गुई वस्तुओं और व्यावसायिक वस्तुओं में समय बिताना चाहिए और उन्हें अलग करना चाहिए। एल। शंकरनारायणन।

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