2009-08-04 9 views
5

में एक लाइन ब्रेक मेरे पास तीन जेएलएबल्स और तीन जेटीक्स्ट एरिया हैं। मेरे पास सीमावर्ती, केंद्र में है, लेकिन मैं उनमें से प्रत्येक को एक अलग पंक्ति में चाहता हूं, ऐसा नहीं हो रहा है और लाइन ब्रेक जावा के लिए Google में शीर्ष दस खोज परिणाम समस्या का समाधान नहीं करते हैं। मैं एक साधारण लाइन ब्रेक कैसे कर सकता हूं?<br>? N? जावा

+0

आप दिखा सकते हैं कि कैसे आप अपने JPanel करने के लिए अपने घटकों को जोड़ रहे हैं? – akf

+0

mainPanel.add (aLabel); mainPanel.add (aScroller); mainPanel.add (bLabel); mainPanel.add (बीएसक्रॉलर); mainPanel.add (cLabel); mainPanel.add (सीएसक्रॉलर); –

+0

यह इस तरह काम करता है: mainPanel.setLayout (नया BoxLayout (mainPanel, BoxLayout.PAGE_AXIS)); –

उत्तर

7

यदि यह एक स्विंग एप्लिकेशन है, तो आपको कंटेनर में अपने फ़ील्ड को रखने के लिए layout manager का उपयोग करना चाहिए।

2

लाइन ब्रेक स्विंग ऑब्जेक्ट्स रखने में मदद नहीं करेगा; आपको एक केंद्र जेपीनेल पर एक लेआउट लगाने की जरूरत है। यही है, आपके सीमा लेआउट का केंद्र एक एकल स्विंग ऑब्जेक्ट होना चाहिए, एक जेपीनल, और आपको इसे एक शैली में सेट करना चाहिए जो आपको प्रत्येक विजेट को ढेर करने की अनुमति देता है। ग्रिडलाउट (6,1) ऐसा कर सकता है।

1

शुरुआत के लिए एक GridLayout उपयोग करके देखें:

panel.setLayout(new GridLayout(0,2)); 
// the order of added components is important 
panel.add(labelA); 
panel.add(textAreaA); 
panel.add(labelB); 
panel.add(textAreaB); 
... 

भी सुंदर प्रतीत नहीं होता है, लेकिन यह आप शुरू हो जाता है।

यदि आप किसी नए पैनल में लेआउटमैनेजर सेट नहीं करते हैं, तो यह फ़्लोलाउट का उपयोग करेगा जो कुछ हद तक HTML लेआउट की तरह व्यवहार करता है। लेकिन FlowLayout में एक इच्छित लाइन ब्रेक जैसी कोई चीज नहीं है। यह तब तक घटक के बाद घटक रखेगा जब तक कि यह उपलब्ध स्थान के अंत तक नहीं पहुंच जाता है और फिर एक नई पंक्ति शुरू करता है।
यदि आप अपने लेआउट पर नियंत्रण चाहते हैं - FlowLayout का उपयोग न करें।

लेआउट प्रबंधकों आप को जानने के लिए चाहते हो सकता है कर रहे हैं:

  • BorderLayout - बहुत अच्छा है अगर आप resizeable सामग्री चाहते
  • GridLayout - सरल बराबर होती है चौड़ाई और ऊंचाई ग्रिड
  • अशक्त - आप का उपयोग करने की अनुमति देता पूर्ण स्थिति प्राप्त करने के लिए प्रत्येक घटक पर सेटबाउंड

और भी हैं, लेकिन इन तीनों को आपको अपने 95% पैनलों को लेआउट करने की अनुमति देनी चाहिए।

2

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

JPanel panel = new JPanel(); 
GridBagLayout layout = new GridBagLayout(); 
panel.setLayout(layout); 
layout.add(label1, new GridBagConstraints(0, 0, 1, 1, 1, 1, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(0, 0, 0, 0), 0, 0)); 
layout.add(area1, new GridBagConstraints(1, 0, 1, 1, 1, 1, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(0, 0, 0, 0), 0, 0)); 
layout.add(label2, new GridBagConstraints(0, 1, 1, 1, 1, 1, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(0, 0, 0, 0), 0, 0)); 
layout.add(area2, new GridBagConstraints(1, 1, 1, 1, 1, 1, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(0, 0, 0, 0), 0, 0)); 
layout.add(label3, new GridBagConstraints(0, 2, 1, 1, 1, 1, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(0, 0, 0, 0), 0, 0)); 
layout.add(area3, new GridBagConstraints(1, 2, 1, 1, 1, 1, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(0, 0, 0, 0), 0, 0)); 
panel.add(label1); 
panel.add(label2); 
panel.add(label3); 
panel.add(area1); 
panel.add(area2); 
panel.add(area3); 

बेशक यह बट-बदसूरत दिखता है लेकिन आपको शुरू करना चाहिए।

तुम भी दुरुपयोग कर सकते हैं एक BorderLayout:

JPanel panel = new JPanel(new BorderLayout()); 
JPanel topRow = new JPanel(); 
panel.add(topRow, BorderLayout.PAGE_START); 
topRow.add(label1); 
topRow.add(area1); 
JPanel middleRowBox = new JPanel(new BorderLayout()); 
panel.add(middleRowBox, BorderLayout.CENTER); 
JPanel middleRow = new JPanel(); 
middleRowBox.add(middleRow, BorderLayout.PAGE_START); 
middleRow.add(label2); 
middleRow.add(area2); 
JPanel bottomRowBox = new JPanel(); 
middleRowBox.add(bottomRowBox, BorderLayout.CENTER); 
JPanel bottomRow = new JPanel(); 
bottomRowBox.add(bottomRow, BorderLayout.PAGE_START); 
bottomRow.add(label3); 
bottomRow.add(area3); 
bottomRowBix.add(new JPanel(), BorderLayout.CENTER); 
+1

यूआई घटकों के बहुत सारे निर्माण के बाद, मैं केवल ग्रिडबैगआउट का उपयोग करता हूं - हाँ यह थोड़ा और काम है, लेकिन अगर आप सही काम करेंगे तो आपका विचार सही तरीके से स्केल होगा। – aperkins

+0

यूआई घटकों के बहुत सारे निर्माण के बाद, हम अब ग्रिडबैगआउट का उपयोग नहीं करते हैं - हां, यह आपको कुछ अच्छा सेल स्केलिंग और संरेखण विकल्प देता है, लेकिन कुछ भी नहीं है जो आप सरल लेआउटमेनर्स के साथ कुछ पैनलों के साथ नहीं कर सकते हैं और रिफैक्टरिंग दर्द हो सकती है । और यदि आप चीजों को गलत करते हैं तो आप एकवचन झूठी सेटिंग खोजने में एक घंटे व्यतीत कर सकते हैं। – Stroboskop

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