Frage

Das Folgende ist nahe an dem, was ich will, und tut, was ich erwarte:

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

Wenn ich jedoch die folgende Änderung vornehme:

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

dh. Ändern Sie die überdurchschnittliche Komponente, um in x und y zu wachsen, und das Etikett 1 -Zelle wächst in X, obwohl dies nicht der Fall sein sollte.

Weiß jemand, wie ich mich damit umgehen kann?

War es hilfreich?

Lösung

Fand eine Problemumgehung, aber nicht ganz zufriedenstellend. Entsprechend Dieser Forum Post und Dieser Forum Post, Miglayout -Schalter von der Berechnung von Komponentengrößen bis hin zur Berechnung der Spaltengrößen, an denen eine Spannweite beteiligt ist. Ersetzen Sie "Füllung" durch "Stutfohlen" in den Layout -Krebs und fügen Sie dann die Spaltenbeschränkungen mit "Wachstum" für jede Spalte hinzu, die zugelassen werden dürfe, es zu beheben.

Arbeitscode:

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

Andere Tipps

Sie könnten auch meine ausprobieren Matrixlayout Layout -Manager als Alternative. Das Konzept ist ähnlich wie MIG -Layout - Tabellenbasiert. Es ist nicht so mächtig, aber es scheint (für mich sowieso) viel einfacher zu verwenden (mit großer Kraft kommt eine große Komplexität). Aber um ehrlich zu sein, könnte das nur daran liegen, dass ich nicht versucht habe, das MIG -Layout zu verstehen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top