Question

Ce qui suit est proche de ce que je veux, et est-ce que je pense:

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);
    }
}

Cependant, si je fais le changement suivant:

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

. Changer le composant enjambée de croître en x ainsi que y, la croissance cellulaire étiquette 1 x, même si elle ne devrait pas.

Quelqu'un sait-il une manière que je peux contourner cela?

Était-ce utile?

La solution

Trouver une solution de contournement, mais pas tout à fait satisfaisante. Selon ce post sur le forum et ce post forum , MigLayout passe de calculer la taille des composants, pour calculer la taille des colonnes où une travée est impliquée. Remplacement de « remplir » avec « pouliche » dans la mise en page contraintes, puis en ajoutant des contraintes de colonne avec « croître » pour chaque colonne qui devraient être autorisés à se développer semble le fixer.

Code de travail:

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);
    }
}

Autres conseils

Vous pouvez également essayer mon MatrixLayout gestionnaire de mise en page comme une alternative. Le concept est similaire à la mise en page MiG - table en fonction. Ce n'est pas aussi puissant, mais il semble (pour moi, de toute façon) beaucoup plus simple à utiliser (avec une grande puissance vient une grande complexité). Mais, pour être honnête, cela pourrait être juste parce que je ne l'ai pas essayé difficile de comprendre la mise en page MiG.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top