2011-10-03 5 views
9

मेरे पास फ्लो लेआउट वाला एक पैनल है, और इसमें 1 से 2000 तक आइटमों की एक चर संख्या हो सकती है। मैं इसे स्क्रॉल फलक, लंबवत दिशा में स्क्रॉल करने योग्य और निश्चित चौड़ाई के साथ रखना चाहता हूं। समस्या यह है कि, जब मैंने पैनल के पसंदीदा आकार को कुछ (800,600) सेट किया है, तो कुछ आइटम गायब हैं, और कोई स्क्रॉल नहीं है। यदि मैं स्क्रॉल फलक का पसंदीदा आकार सेट अप करता हूं, तो प्रवाह फलक में सभी तत्व एक बहुत लंबी लाइन पर रखे जाते हैं।प्रवाह लेआउट के साथ केवल पैनल की पसंदीदा चौड़ाई कैसे सेट करें?

किसी भी तत्व पर अधिकतम आकार निर्धारित करना कुछ भी नहीं लगता है - लेआउट प्रबंधक इसे अनदेखा करते हैं।

मैं इसे कैसे ठीक कर सकता हूं?

+1

'1 से लेकर वास्तव में बड़ी संख्या 'में कुछ तर्क हैं – mKorbel

+0

कुछ बेहतर संख्याओं को जोड़ा गया :) मेरी खराब अंग्रेजी को क्षमा करें। – Rogach

+2

करो। नहीं। उपयोग। setXXSize। इसके बजाय, एक उचित LayoutManager का उपयोग – kleopatra

उत्तर

3

ऐसा करने के लिए BoxLayout इस्तेमाल कर सकते हैं:

JPanel verticalPane = new JPanel(); 
verticalPane.setLayout(new BoxLayout(verticalPane, BoxLayout.Y_AXIS)); 

JScrollPane pane = new JScrollPane(verticalPane); 

//add what you want to verticalPane 
verticalPane.add(new JButton("foo")); 
verticalPane.add(new JButton("bar")); 
निश्चित रूप से

यह प्रत्येक घटक जोड़ा के पसंदीदा आकार का उपयोग करेगा। यदि आप एक JPanel के उदाहरण के लिए वांछित आकार को संशोधित करना चाहते हैं, तो यह विस्तार और getPreferredSize ओवरराइड:

class MyPanel extends JPanel(){ 
    public Dimension getPreferredSize(){ 
     return new Dimension(100,100); 
    } 
} 

एक नोट: BoxLayout विचार getPreferredSize में ले जाएगा, अन्य LayoutManager नहीं हो सकता।

कृपया मेरे उत्तर की आलोचना करें, मुझे यकीन नहीं है कि यह पूरी तरह से सही है और मुझे यह जानने के लिए आपत्तियों को सुनकर उत्सुकता है कि मुझे समस्या समझ गई है या नहीं।

+3

'इस कोर्स प्रत्येक घटक जोड़ा के पसंदीदा आकार का उपयोग करेगा की' निश्चित रूप से गलत है (या पूरी तरह से सही नहीं है, जो कुछ वे संकेत के साथ की तरह आप "उपयोग" द्वारा क्या मतलब है पर ;-) LayoutManagers करने के लिए स्वतंत्र हैं एक सा निर्भर करता है घटकों द्वारा दिया गया। getXXSize अधिभावी जाना है, हालांकि हार्ड-कोडेड मूल्यों उन्हें सेटिंग के रूप में लगभग के रूप में बुरा कर रहे हैं सही दिशा है। बस एक सभ्य लेआउटमैनेजर का उपयोग करें और इसे आवश्यक आकार के नियमों के साथ कॉन्फ़िगर करें। – kleopatra

4

मैं एक स्क्रॉल फलक, ऊर्ध्वाधर दिशा में स्क्रॉल के अंदर डाल दिया चाहते हैं, और निश्चित चौड़ाई

साथ आप इस के लिए Wrap Layout उपयोग कर सकते हैं।

पैनल के पसंदीदा आकार को सेट न करें। लेकिन आप स्क्रॉल फलक का पसंदीदा आकार सेट कर सकते हैं ताकि frame.pack() विधि काम करेगी।

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