2010-08-03 12 views
6

मैंने को BorderLayout और JScrollPane के साथ CENTER तत्व के रूप में प्रारंभ किया।जावा का फ़्लोलाउट सही ढंग से आकार बदलता नहीं है

स्क्रॉल फलक VERTICAL_SCROLLBAR_ALWAYS और HORIZONTAL_SCROLLBAR_NEVER नीतियों के साथ सेट है। मेरे frame का इरादा नियंत्रित चौड़ाई है, जबकि ऊंचाई को बढ़ाना/हटाना चाहिए क्योंकि डेटा जोड़ा/हटा दिया गया है।

मेरी scroll pane अंदर, मैं जोड़ा एक सरल JPanel (की सुविधा देता है यह सामग्री पैनल कहते हैं) जो एक FlowLayout (और LEADING नीति) के साथ आरंभ नहीं हो जाता।

इसका परीक्षण करने के लिए, मैं बस content panel को 20 JLabel("Item " + n) घटकों के साथ पॉप्युलेट करता हूं जहां n लूप काउंटर है।

मैं देखने की अपेक्षा करेंगे मेरी labels एक ही पंक्ति पर दिखाया अगर frame काफी बड़ी है और लेबल अन्य लाइनों को लपेट जब मैं चौड़ाई हटना। लेकिन इसके बजाए, केवल एक सिंगल लाइन प्रदर्शित नहीं है जिसमें कभी भी लपेट नहीं है ... कभी भी।

क्या किसी को पता है कि flow layoutscroll pane शामिल होने पर क्यों लपेटता है?

अगर मैं scroll pane सब एक साथ हटाने और content panel सीधे frame में डाल दिया, वांछित रैपिंग प्रभाव होता है, लेकिन frame ऊंचाई content panel ऊंचाई यह सिर्फ गायब हो जाता है की तुलना में छोटे सिकुड़ जाता है।

विचार यह है कि मैं अपने labels को जरूरी होने पर लपेटना चाहता हूं लेकिन अगर यह ऊपर/नीचे स्क्रॉल करना है तो हमेशा दिखाई दे।

इसे ठीक करने के तरीके पर कोई सुझाव?

धन्यवाद।

उत्तर

9

Wrap Layout एक स्पष्टीकरण और समाधान देता है।

+0

यह जरूरत/अब तक अपेक्षा के अनुरूप ठीक उसी तरह काम करने लगता है! आइए आशा करते हैं कि ओरेकल स्विंग में अधिक निवेश करेगी, सूर्य की इच्छा थी! बहुत बहुत धन्यवाद! – Jeach

+0

क्या आप कहेंगे कि फ़्लोलाउट में बग हैं या क्या आपको लगता है कि इस तरह से व्यवहार करने के लिए सूर्य का इरादा था? WrapLayout इतना अधिक समझ में आता है कि यह स्विंग का हिस्सा होना चाहिए! – Jeach

+0

यह कोई बग नहीं है क्योंकि कोई कोड नहीं है जो गतिशील रूप से पसंदीदा आकार को पुन: गणना करने का प्रयास करता है। जिस तरह से किसी ने इसे काम करने के लिए डिजाइन किया है। – camickr

0

आप desingner के साथ काम करते हैं, तो आप (हटाना क्या सेट किया गया है) शून्य पर preferedSize गुण सेट तो ट्रिपल डॉट्स [...] बटन preferedsize संपत्ति के नाम के आगे क्लिक करके पसंदीदा आकार सेट और डाल करने के लिए है आपका पसंदीदा मूल्य

मैं एक ही probleme का सामना करना पड़ा है और यह मेरे लिए काम करता

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