Pergunta

O seguinte está próximo do que eu quero e faz o 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);
    }
}

No entanto, se eu fizer a seguinte mudança:

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

ou seja. Altere o componente espalhado para crescer em X e Y, a célula do rótulo 1 cresce em x, mesmo que não deva.

Alguém sabe de uma maneira que eu posso dar a volta?

Foi útil?

Solução

Encontrou uma solução alternativa, embora não totalmente satisfatória. De acordo com Este post do fórum e Este post do fórum, Miglayout muda dos tamanhos dos componentes de cálculo, para calcular tamanhos de coluna em que um período está envolvido. Substituir "preencher" por "potra" nas contrações do layout e, em seguida, adicionar restrições de coluna com "Grow" para cada coluna que deve crescer parece corrigi -lo.

Código de trabalho:

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

Outras dicas

Você também pode tentar meu Matrixlayout Gerente de layout como alternativa. O conceito é semelhante ao MIG Layout - baseado em tabela. Não é tão poderoso, mas parece -me (de qualquer maneira) muito mais simples de usar (com grande poder vem grande complexidade). Mas, para ser sincero, isso pode ser apenas porque não tentei entender o layout MIG.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top