2010-04-01 7 views
6

मैं स्विंग ग्रुपलाउट का उपयोग कर रहा हूं और मैं मूल्य GroupLayout.DEFAULT_SIZE और GroupLayout.PREFERRED_SIZE के बारे में उलझन में हूं। मुझे कभी पता नहीं है कि उनमें से प्रत्येक को GroupLayout.addComponent(Component, int, int, int) जैसी विधियों में कब उपयोग करना है।DEFAULT_SIZE और PREFERRED_SIZE के बीच क्या अंतर है?

मैं इस कोड है लगता है:

GroupLayout l = ...; 

l.setHorizontalGroup(l.createSequentialGroup() 
    .addComponent(tf1) 
    .addComponent(tf2)); 

l.setVerticalGroup(l.createParallelGroup() 
    .addComponent(tf1) 
    .addComponent(tf2)); 

GroupLayout (एक अनुक्रमिक समूह क्षैतिज और एक समानांतर समूह खड़ी) के साथ बाहर रखी एक पंक्ति पर दो JTextField रों देखते हैं। अगर मैं अब विंडो का आकार बदलता हूं, तो दोनों घटक उपलब्ध स्थान (50% प्रत्येक) प्राप्त करते हैं। लेकिन मैं केवल पहले टेक्स्ट फ़ील्ड को क्षैतिज रूप से बढ़ने/घटाने के लिए चाहता हूं और लंबवत रूप से बढ़ने/घटाने के लिए केवल दूसरा टेक्स्ट फ़ील्ड चाहता हूं। मिनट, pref और अधिकतम का उपयोग करने के लिए मुझे क्या करना चाहिए? मुझे पता है कि मैं बस कोशिश कर सकता हूं और देख सकता हूं कि संयोजन क्या काम करता है लेकिन मैं इस समस्या के पीछे तर्क जानना चाहता हूं।

+0

मूल रूप से GroupLayout को WYSIWYG उपयोगकर्ता इंटरफ़ेस संपादकों (जैसे नेटबीन्स में) में उपयोग करने के लिए डिज़ाइन किया गया है। क्या आप ओड जिज्ञासा पूछते हैं या आप इसे "हाथ से" इस्तेमाल करते हैं? – pajton

+1

दोनों :-) मैं नेटबीन से WYSIWYG संपादक का उपयोग करता हूं लेकिन मुझे कोड समझना अच्छा लगता है ताकि मैं कुछ सरल मामलों को 'हाथ से' कार्यान्वित कर सकूं। जब मैं इसे स्वयं करता हूं तो मेरे पास कोड का अधिक नियंत्रण होता है। – cd1

उत्तर

3

कुछ मार्गदर्शन How to Use GroupLayout: Component Size and Resizability में पाए जा सकते हैं। DEFAULT_SIZE और PREFERRED_SIZE, के बारे में

वे

addComponent(Component comp, int min, int pref, int max) 

आकार बदलने योग्य होने के लिए एक घटक बाध्य करने के लिए विधि में पैरामीटर के रूप में इस्तेमाल किया जा सकता (सिकुड़ और बढ़ती अनुमति देते हैं):

group.addComponent(component, 0, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) 

यह घटक को शून्य आकार (न्यूनतम) के बीच किसी आकार (Short.MAX_VALUE) के आकार का आकार बदलने के लिए अधिकतम आकार का मतलब है "अनंत")। यदि हम चाहते थे कि घटक अपने डिफ़ॉल्ट न्यूनतम आकार से कम न हो, तो हम दूसरे पैरामीटर में 0 के बजाय GroupLayout.DEFAULT_SIZE का उपयोग करेंगे।

एक घटक निश्चित आकार बनाने के लिए (आकार बदलने को दबाने):

group.addComponent(component, GroupLayout.PREFERRED_SIZE, 
    GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)... 

दिलचस्प है, निरंतर मूल्यों नकारात्मक हैं, इसलिए वे वास्तविक कमी के लिए गलत नहीं हो सकता है।

1

मैं कैसे GroupLayout.DEFAULT_SIZE और GroupLayout.PREFERRED_SIZE, GroupLayout.SequentialGroup.addComponent(Component c, int min, int pref, int max) में उपयोग किया जाता जावा ट्यूटोरियल की GroupLayout अनुभाग और एक java.net Getting to know GroupLayout, part 1 शीर्षक से लेख को संदर्भित करने के बाद भी भी बारे में उलझन में था।

जेडीके 1.6.0_27 GroupLayout.javasource में डाइविंग मुझे कंपोनेंट्सप्रिंग क्लास में जवाब मिल गए। से है कि मैं इन नियमों बाहर काम करने में सक्षम था:

  1. और प्रदान की min मान, गैर-नकारात्मक है कि मान दिया जाता है: एक न्यूनतम आकार की जरूरत है

  2. अन्यथा यदि यह PREFERRED_SIZE है, तो हम पसंदीदा आकार के नियमों का पालन करते हैं।
  3. अन्यथा घटक का न्यूनतम आकार वापस कर दिया गया है।

एक पसंदीदा आकार की जरूरत है:

  1. और प्रदान की pref मान, गैर-नकारात्मक है कि मूल्य दिया जाता है।
  2. अन्यथा यदि यह DEFAULT_SIZE या PREFERRED_SIZE है, तो घटक का पसंदीदा आकार वापस करें।

अधिकतम आकार की जरूरत है:

  1. और प्रदान की max मान, गैर-नकारात्मक है कि मूल्य दिया जाता है।
  2. अन्यथा यदि यह PREFERRED_SIZE है, तो हम पसंदीदा आकार के नियमों का पालन करते हैं।
  3. अन्यथा घटक का अधिकतम आयात वापस कर दिया गया है।

जैसा कि ट्रैशगोड पहले से ही नोट किया गया है, परिभाषा नकारात्मक हैं। मिनट, pref और अधिकतम के लिए DEFAULT_SIZE या PREFERRED_SIZE के अलावा कोई अन्य नकारात्मक मान त्रुटियों और हिट आक्रमण हैं।

SequentialGroup.addComponent मिनट, pref, और अधिकतम आकार के बीच इंटरप्ले ट्यूटोरियल से तुरंत मुझे स्पष्ट नहीं था। अब मुझे पता है कि क्यों PREFERRED_SIZE,DEFAULT_SIZE,PREFERRED_SIZE तय किया गया है, इससे कोई फर्क नहीं पड़ता कि मध्य तर्क DEFAULT_SIZE या PREFERRED_SIZE और नेटबीन ने DEFAULT_SIZE,300,Short.MAX_VALUE कार्य जैसे निश्चित आकार मान कैसे उत्पन्न किए हैं।

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