سؤال

أنا أستخدم Swing Grouplayout وأنا مرتبك بشأن القيم GroupLayout.DEFAULT_SIZE و GroupLayout.PREFERRED_SIZE. لا أعرف أبدًا متى أستخدم كل واحد منهم في أساليب مثل GroupLayout.addComponent(Component, int, int, int).

افترض أن لدي هذا الرمز:

GroupLayout l = ...;

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

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

هنالك اثنان JTextFieldS على خط واحد وضع مع GroupLayout (مجموعة متتابعة واحدة أفقيا ومجموعة متوازية عموديا). إذا قمت بتغيير حجم النافذة الآن ، فإن كلا المكونين يحصلان على المساحة المتاحة (50 ٪ لكل منهما). لكني أريد فقط أن ينمو/حقل النص الأول/يتقلص أفقياً ، وحقل النص الثاني فقط ينمو/يتقلص رأسياً. ما قيم دقيقة, مسبق و الأعلى هل يجب أن أستخدم لإنجاز ذلك؟ أعلم أنه يمكنني فقط تجربته ومعرفة ما هو المزيج الذي يعمل ، لكنني أود أن أعرف المنطق وراء هذه المشكلة.

هل كانت مفيدة؟

المحلول

يمكن العثور على بعض التوجيهات في كيفية استخدام grouplayout: حجم المكون وإعادة التوحيد. متعلق 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 كما الحد الأقصى للحجم يعني "لانهائي"). إذا أردنا أن لا يتقلص المكون أقل من الحد الأدنى للحجم الافتراضي ، فسنستخدمه GroupLayout.DEFAULT_SIZE بدلا من 0 في المعلمة الثانية.

لجعل المكون ثابتًا ثابتًا (قمع تغيير حجمه):

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

ومن المثير للاهتمام ، أن القيم الثابتة سلبية ، لذلك لا يمكن أن تكون مخطئة في القيود الفعلية.

نصائح أخرى

كنت مرتبكًا أيضًا حول كيفية GroupLayout.DEFAULT_SIZE و GroupLayout.PREFERRED_SIZE تستخدم في GroupLayout.SequentialGroup.addComponent(Component c, int min, int pref, int max), ، حتى بعد الرجوع إلى قسم Grouplayout في دروس Java ومقال Java.net بعنوان التعرف على Grouplayout ، الجزء 1.

الغوص في JDK 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. وإلا يتم إرجاع الحد الأقصى للمكون.

كما لاحظ Trashgod بالفعل ، فإن التعريفات سلبية. أي قيمة سالبة أخرى لـ Min و Pref و Max إلى جانب ذلك DEFAULT_SIZE أو PREFERRED_SIZE هي أخطاء وتأثيرات ضرب.

التفاعل بين SequentialGroup.addComponent لم تكن أحجام Min و Pref و Max واضحة على الفور من البرنامج التعليمي. الآن أعرف لماذا PREFERRED_SIZE,DEFAULT_SIZE,PREFERRED_SIZE ثابت ، لماذا لا يهم إذا كانت الوسيطة الوسطى DEFAULT_SIZE أو PREFERRED_SIZE وكيف أنشأ NetBeans قيم حجم ثابتة مثل DEFAULT_SIZE,300,Short.MAX_VALUE الشغل.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top