मैं इसे स्वीकृत उत्तर से अलग देख रहा हूं।
1) क्या मुझे उन तरीकों के उपयोग से पूरी तरह से बचना चाहिए?
कभी न टालें! वे लेआउट प्रबंधक के लिए आपके घटकों के आकार की बाधाओं को व्यक्त करने के लिए वहां मौजूद हैं। यदि आप किसी लेआउट प्रबंधक का उपयोग नहीं कर रहे हैं, तो आप उनका उपयोग करने से बच सकते हैं और अपने आप दृश्य दृश्य को प्रबंधित करने का प्रयास कर सकते हैं।
दुर्भाग्य से, स्विंग उचित डिफ़ॉल्ट आयामों के साथ नहीं आ रहा है। हालांकि, एक घटक के आयामों को स्थापित करने के बजाय, उचित चूक के साथ अपने स्वयं के घटक को नीचे उतारना बेहतर OOP है। (उस मामले में आप अपने वंशज वर्ग में सेटएक्सएक्सएक्सएक्स कहते हैं।) वैकल्पिक रूप से, आप एक ही प्रभाव के लिए गेटएक्सएक्सएक्स तरीकों को ओवरराइड कर सकते हैं।
2) तरीकों को एक कारण के लिए परिभाषित किया गया है। तो मुझे उनका उपयोग कब करना चाहिए? किस संदर्भ में? किन उद्देश्यों के लिए?
हमेशा। जब आप एक घटक बनाते हैं, तो उस घटक के उपयोग के अनुसार उसका यथार्थवादी न्यूनतम / पसंदीदा / अधिकतम आकार निर्धारित करें। उदाहरण के लिए, यदि आपके पास यूके जैसे देश के प्रतीकों को दर्ज करने के लिए एक JTextField है, तो इसका पसंदीदा आकार दो वर्णों (वर्तमान फ़ॉन्ट, आदि) के साथ फिट होने के लिए व्यापक होगा, लेकिन शायद यह किसी भी बड़े को बढ़ने देने के लिए अर्थहीन है। आखिरकार, देश के प्रतीक दो वर्ण हैं। इसके विपरीत, यदि आपके पास ग्राहक नाम उदा जैसे दर्ज करने के लिए JTextField है, तो इसका आकार 20 वर्णों के लिए पिक्सेल आकार की तरह हो सकता है, लेकिन लेआउट बड़ा होने पर बड़ा हो सकता है, इसलिए अधिकतम आकार को अधिक पर सेट करें। उसी समय, 0px चौड़ा JTextField का होना व्यर्थ है, इसलिए एक यथार्थवादी न्यूनतम आकार सेट करें (मैं 2 वर्णों के पिक्सेल आकार कहूँगा)।
3) उन तरीकों का उपयोग करने के नकारात्मक परिणाम क्या हैं?
(मैं केवल विभिन्न स्क्रीन रिज़ॉल्यूशन वाले सिस्टम के बीच पोर्टेबिलिटी जोड़ने के बारे में सोच सकता हूं)।
कोई नकारात्मक परिणाम नहीं। ये लेआउट प्रबंधक के लिए संकेत हैं।
4) मुझे नहीं लगता कि कोई भी लेआउट मैनजर सभी वांछित लेआउट जरूरतों को पूरा कर सकता है।
क्या मुझे वास्तव में अपने लेआउट पर हर छोटे बदलाव के लिए एक नया LayoutManager लागू करने की आवश्यकता है?
नहीं, बिलकुल नहीं। सामान्य दृष्टिकोण क्षैतिज और ऊर्ध्वाधर लेआउट जैसे विभिन्न बुनियादी लेआउटमैन को कैस्केड करना है।
उदाहरण के लिए, नीचे दिया गया लेआउट:
<pre>
+--------------+--------+
| ###JTABLE### | [Add] |
| ...data... |[Remove]|
| ...data... | |
| ...data... | |
+--------------+--------+
</pre>
दो भागों में है। बाएँ और दाएँ भाग एक क्षैतिज लेआउट हैं। दाहिना भाग क्षैतिज लेआउट में जोड़ा गया एक JPanel है, और इस JPanel में एक ऊर्ध्वाधर लेआउट है, जो बटन को लंबवत रूप से देता है।
बेशक, यह एक वास्तविक जीवन लेआउट के साथ मुश्किल बढ़ सकता है। इसलिए ग्रिड-आधारित लेआउट प्रबंधक जैसे कि MigLayout बहुत बेहतर है यदि आप कुछ भी गंभीर विकसित करने वाले हैं।
5) यदि 4 का उत्तर "हाँ" है, तो क्या इससे लेआउटमैनगर वर्गों का प्रसार नहीं होगा जिसे बनाए रखना मुश्किल हो जाएगा?
नहीं, आप निश्चित रूप से लेआउट प्रबंधकों का विकास नहीं करेंगे, जब तक कि आपको कुछ बहुत विशेष की आवश्यकता न हो।
6) ऐसी स्थिति में जहां मुझे अनुपात को परिभाषित करने की आवश्यकता होती है ...
एक घटक के बच्चों के बीच (उदाहरण के लिए, child1 को 10% स्थान, चाइल्ड 2 40%, चाइल्ड 3 50% का उपयोग करना चाहिए), क्या यह संभव है कि बिना कस्टम लेआउटमैनेजर को लागू किए?
मूल रूप से, एक बार पसंदीदा आकार सही सेट हो जाने के बाद, आप प्रतिशत में कुछ भी नहीं करना चाहेंगे। बस, क्योंकि प्रतिशत व्यर्थ हैं (जैसे कि JTextField में विंडो आकार का 10% होना व्यर्थ है - क्योंकि कोई विंडो को सिकोड़ सकता है ताकि JTextField 0px चौड़ा हो जाए, या विंडो का विस्तार कर सके ताकि JFextField एक डिस्प्ले पर दो डिस्प्ले के पार हो बहु-प्रदर्शन सेटअप)।
लेकिन, कई बार आप अपने गुई के बड़े बिल्डिंग ब्लॉक्स (उदाहरण के लिए) के आकार को नियंत्रित करने के लिए प्रतिशत का उपयोग कर सकते हैं।
आप JSplitPane का उपयोग कर सकते हैं जहाँ आप दोनों पक्षों के अनुपात को पूर्व-निर्धारित कर सकते हैं। या, आप MigLayout का उपयोग कर सकते हैं जो आपको प्रतिशत, पिक्सेल और अन्य इकाइयों में ऐसी बाधाओं को सेट करने की अनुमति देता है।
JEditorPane
HTML के साथ उपयोग करना जो स्वयं एक चौड़ाई का सुझाव नहीं देता है। ओटोह मुझे यकीन नहीं है कि मैंने कुछ याद किया है। मैं थ्रेड पर उत्तरों की सावधानीपूर्वक समीक्षा करूंगा, लेकिन यदि आपके पास कोई टिप्पणी थी, तो विशेष रूप से बाद के मामले में आपकी रुचि थी।