के बीच मुख्य अंतर क्या है setSize()
और setPreferredSize()
। कभी-कभी मैं इस्तेमाल करता था setSize()
, कभी-कभी setPreferredSize()
, एक जो मैं चाहता हूं, वह कभी-कभी करता है।
मुझे JFrame
s और JPanel
s के लिए किस कॉल का उपयोग करना चाहिए ?
के बीच मुख्य अंतर क्या है setSize()
और setPreferredSize()
। कभी-कभी मैं इस्तेमाल करता था setSize()
, कभी-कभी setPreferredSize()
, एक जो मैं चाहता हूं, वह कभी-कभी करता है।
मुझे JFrame
s और JPanel
s के लिए किस कॉल का उपयोग करना चाहिए ?
जवाबों:
उपयोग इस बात पर निर्भर करता है कि घटक के माता-पिता के पास लेआउट प्रबंधक है या नहीं।
setSize()
- जब अभिभावक लेआउट प्रबंधक मौजूद न हो तो उपयोग करें;setPreferredSize()
(इसके संबंधित setMinimumSize
और भी setMaximumSize
) - एक अभिभावक लेआउट प्रबंधक मौजूद होने पर उपयोग करें।setSize()
अगर घटक के माता-पिता एक लेआउट प्रबंधक उपयोग कर रहा है विधि शायद कुछ नहीं करेंगे; स्थानों यह आम तौर पर एक प्रभाव शीर्ष स्तर के घटकों (पर होगा होगा JFrame
और JWindow
रों) और चीजें हैं जो स्क्रॉल शीशे के अंदर कर रहे हैं। setSize()
यदि आपको लेआउट प्रबंधक के बिना माता-पिता के अंदर घटक मिल गए हैं तो आपको कॉल भी करना होगा ।
आम तौर पर, setPreferredSize()
यदि लेआउट प्रबंधक मौजूद है, तो उम्मीद के मुताबिक घटकों को बाहर रखा जाएगा; अधिकांश लेआउट प्रबंधक अपने घटकों के पसंदीदा (साथ ही न्यूनतम और अधिकतम) आकार प्राप्त करके काम करते हैं, फिर लेआउट के नियमों के अनुसार उन घटकों का उपयोग करते हैं setSize()
और setLocation()
उन्हें स्थिति में लाते हैं।
उदाहरण के लिए, BorderLayout
इसके "उत्तर" क्षेत्र की सीमा को इसके उत्तर घटक के पसंदीदा आकार के बराबर बनाने की कोशिश करता है --- वे इससे बड़े या छोटे आकार के आधार पर JFrame
, अन्य घटकों के आकार के आधार पर समाप्त हो सकते हैं। लेआउट में, और इसी तरह।
setSize()
या setBounds()
उपयोग किया जा सकता है जब कोई लेआउट प्रबंधक का उपयोग नहीं किया जा रहा हो।
हालाँकि, यदि आप एक लेआउट प्रबंधक का उपयोग कर रहे हैं, तो आप लेआउट प्रबंधक को संकेत प्रदान कर सकते हैं setXXXSize()
जैसे setPreferredSize()
और setMinimumSize()
आदि।
और सुनिश्चित करें कि घटक का कंटेनर एक लेआउट प्रबंधक का उपयोग करता है जो अनुरोधित आकार का सम्मान करता है। FlowLayout
, GridBagLayout
, और SpringLayout
प्रबंधकों घटक की पसंदीदा आकार (उत्तरार्द्ध दो बाधाओं आप सेट पर निर्भर करता है), लेकिन का उपयोग BorderLayout
और GridLayout
आम तौर पर आप don't.If एक घटक पहले से ही दिखाई दे रहा है कि के लिए नए आकार संकेत निर्दिष्ट करते हैं, आप पर पुनः सत्यापित विधि को लागू करने की जरूरत है यह सुनिश्चित करने के लिए कि इसका नियंत्रण पदानुक्रम फिर से निर्धारित किया गया है। फिर दमन विधि को लागू करें।
setSize
निर्दिष्ट आकार के घटक का आकार बदल देगा।
setPreferredSize
पसंदीदा आकार सेट करता है। घटक वास्तव में यह आकार उस कंटेनर के आकार के आधार पर नहीं हो सकता है जिसमें यह है, या यदि उपयोगकर्ता घटक को फिर से आकार देता है।
IIRC ...
setSize
घटक का आकार निर्धारित करता है।
setPreferredSize
पसंदीदा आकार सेट करता है। लेआउटमैन अपने घटक के लिए उस स्थान को व्यवस्थित करने का प्रयास करेगा।
यह इस बात पर निर्भर करता है कि आप लेआउट मैनेजर का उपयोग कर रहे हैं या नहीं ...