के बीच मुख्य अंतर क्या है setSize()और setPreferredSize()। कभी-कभी मैं इस्तेमाल करता था setSize(), कभी-कभी setPreferredSize(), एक जो मैं चाहता हूं, वह कभी-कभी करता है।
मुझे JFrames और JPanels के लिए किस कॉल का उपयोग करना चाहिए ?
के बीच मुख्य अंतर क्या है setSize()और setPreferredSize()। कभी-कभी मैं इस्तेमाल करता था setSize(), कभी-कभी setPreferredSize(), एक जो मैं चाहता हूं, वह कभी-कभी करता है।
मुझे JFrames और JPanels के लिए किस कॉल का उपयोग करना चाहिए ?
जवाबों:
उपयोग इस बात पर निर्भर करता है कि घटक के माता-पिता के पास लेआउट प्रबंधक है या नहीं।
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पसंदीदा आकार सेट करता है। लेआउटमैन अपने घटक के लिए उस स्थान को व्यवस्थित करने का प्रयास करेगा।
यह इस बात पर निर्भर करता है कि आप लेआउट मैनेजर का उपयोग कर रहे हैं या नहीं ...