سؤال

ما يلي قريب من ما أريد، ويفعل ما أتوقعه:

import javax.swing.JComboBox;
import javax.swing.JPanel;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;

import net.miginfocom.swing.MigLayout;

public class MigBug extends JFrame {

    public static void main(String args[]) {
        MigBug migbug = new MigBug();
        migbug.pack();
        migbug.setVisible(true);
    }

    public MigBug() {
        JPanel content = new JPanel();
        content.setLayout(new MigLayout("fill, debug"));

        content.add(new JLabel("Label 1"));
        content.add(new JComboBox());

        content.add(new JLabel("Label 2"));
        content.add(new JTextField(25), "growx, wrap");

        content.add(new JLabel("BIG"), "span, w :400:, h :200:, growy");

        setContentPane(content);
    }
}

ومع ذلك، إذا اتخذت التغيير التالي:

content.add(new JLabel("BIG"), "span, w :400:, h :200:, grow");

بمعنى آخر. قم بتغيير المكون الممتد إلى النمو في X وكذلك Y، نمو الخلية 1 الملصق في X، على الرغم من أنه لا ينبغي ذلك.

لا أحد يعرف طريقة يمكنني الحصول على جولة هذا؟

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

المحلول

وجدت الحل البديل، على الرغم من عدم مرضية تماما. وفق هذا المنتدى ما بعد و هذا المنتدى ما بعد, ، مفاتيح Miglayout من حساب أحجام المكونات، لحساب أحجام الأعمدة حيث يشارك SPAN. استبدال "املأ" ب "FILLY" في مخففة تخطيط، ثم قم بإضافة قيود الأعمدة مع "النمو" لكل عمود يجب السماح له بأن ينمو يبدو لإصلاحه.

رمز العمل:

import javax.swing.JComboBox;
import javax.swing.JPanel;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;

import net.miginfocom.swing.MigLayout;

public class MigBug extends JFrame {

    public static void main(String args[]) {
        MigBug migbug = new MigBug();
        migbug.pack();
        migbug.setVisible(true);
    }

    public MigBug() {
        JPanel content = new JPanel();
        content.setLayout(new MigLayout("filly, debug", "[][grow][][grow]"));

        content.add(new JLabel("Label 1"));
        content.add(new JComboBox());

        content.add(new JLabel("Label 2"));
        content.add(new JTextField(25), "growx, wrap");

        content.add(new JLabel("BIG"), "span, w :400:, h :200:, grow");

        setContentPane(content);
    }
}

نصائح أخرى

يمكنك أيضا تجربة بلدي matrixlayout. مدير التخطيط كبديل. المفهوم هو ما هو مشابه مثل تصميم MIG - الجدول القائم. إنها ليست قوية، ولكن يبدو (بالنسبة لي، على أي حال) أبسط بكثير للاستخدام (مع قوة كبيرة تأتي تعقيدا كبيرا). ولكن، أن نكون صادقين، قد يكون ذلك فقط لأنني لم أحاول الصعب فهم تخطيط MIG.

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