Pregunta

El siguiente es cercano a lo que yo quiero, y hace lo que espero:

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

Sin embargo, si hago el siguiente cambio:

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

ie. Cambiar el componente distribuido a crecer en x, así como y, la casilla Etiqueta 1 crece en x, a pesar de que no debe.

¿Alguien sabe alguna manera de conseguir alrededor de esto?

¿Fue útil?

Solución

Encontrados una solución, aunque no del todo satisfactoria. Según este mensaje del foro y este mensaje en el foro , MigLayout cambia de cálculo de tamaño de los componentes, para el cálculo de tamaños de las columnas en los que haya un palmo. La sustitución de "rellenar" con "potra" en los contraints de diseño, a continuación, añadir las restricciones de columna con "crecer" para cada columna que se debe permitir que crezca parece solucionarlo.

Código de trabajo:

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

Otros consejos

También puede probar mi MatrixLayout controlador de distribución como alternativa. El concepto es similar a la del MiG Layout - basada mesa. No es tan poderosa, pero parece (al menos para mí) mucho más fácil de usar (con gran poder conlleva una gran complejidad). Pero, para ser honesto, que sólo podría ser porque no he probado difícil de entender MiG Layout.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top