Aprendendo MigLayout

To estudando o MigLayout aqui porem meu textField nao esta ocupando duas celulas, pelo contrario esta bem pequeno :cry:. Ajuda alguem?

[code]package com.teste.rev;

import net.miginfocom.swing.MigLayout;

import java.awt.Dimension;

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

public class Teste extends JFrame {

/**
 * 
 */
private static final long serialVersionUID = 1L;

public static void main(String[] args) {
	
	new Teste();
	
}


Teste(){
	
	this.gui();
	
}


void gui(){
	
	this.setVisible(true);
			
	JPanel panel = this.getPanel();
	
	this.setContentPane(panel);
	
	JButton button = this.getButton();
	JLabel labelNome = this.getLabel();
	JTextField text = this.getText();
	
	MigLayout mig = new MigLayout();
	panel.setLayout(mig);
	
	panel.add(labelNome);
	panel.add(text, "span 2");
				
	this.pack();
	
	this.setSize(new Dimension(1024,768));
				
	this.setLocationRelativeTo(null);
			
}

private JButton getButton(){
			
	JButton button =  new JButton("Ok");
	
	button.setSize(new Dimension(150,80));
	
    button.setVisible(true);
	
	return button;
	
}

private JLabel getLabel(){
	
	JLabel label = new JLabel("Nome:");
			
	label.setVisible(true);
	
	return label;
	
}

private JTextField getText(){
	
	JTextField text = new JTextField();
	
	//text.setSize(new Dimension(200,100));
	
	text.setVisible(true);
	
	return text;
	
}

private JPanel getPanel(){
	
	JPanel panel = new JPanel();

	return panel;		
}

}
[/code]

Coloque “span 2,grow x”

grow x… representa o que Mark?

Eu coloquei o setPreferredSize funcionou mas pq nao funciona com size()?

outra duvida to usando o seguinte:

panel.add(labelNome); panel.add(text, "span 2, grow x, wrap 20"); // eu havia colocado wrap 2, porem a quebra de linha parece que nao aumentou ou seja pulou uma linha só ai coloquei wrap 20, e quebrou mais linhas, esse numero e de acordo com o que? Ou e aleatorio assim mesmo e tem que ir testando? panel.add(telefone); panel.add(textTel, "span 2, grow x, wrap");

grow x é para o componente assumir todo espaço disponivel em largura.

A questão de setSize e preferredSize é que o swing faz umas coisas esquesitas mas não lembro explicar isso direito.

E nem sabia que tem parametros depois de wrap. Sempre uso ele apenas para a proxima linha.

Quando quero espaço entre “partes” da tela, eu uso varios JPanels com o conteudo respectivo e depois um LayoutManager para gerenciar essas JPanels.

Quando eu adiciono um LayoutManager (MigLayout) no caso em meu panel, como eu sei quantas colunas ele tem?

Se não me engano, quando você instancia um objeto do tipo MigLayout, ele não possui nenhuma coluna “definida”. Elas são setadas de acordo com a sua ordenação dos componentes na tela.

Agora, se você quer colocar um número de colunas específico, use os parâmetros relacionados à colunas da classe.
Talvez aqui tenha algo que te ajude:

http://migcalendar.com/miglayout/cheatsheet.html

:}

[quote=Nicolas Fernandes]Se não me engano, quando você instancia um objeto do tipo MigLayout, ele não possui nenhuma coluna “definida”. Elas são setadas de acordo com a sua ordenação dos componentes na tela.

Agora, se você quer colocar um número de colunas específico, use os parâmetros relacionados à colunas da classe.
Talvez aqui tenha algo que te ajude:

http://migcalendar.com/miglayout/cheatsheet.html

:}[/quote]

Entao se nao tem qtde de colunas definidas se eu fizer por exemplo:

e

o Layout cria na hora a coluna 3 e depois a coluna 10?

GALERA…

so uma pergunta…

o MigLayout redimenciona automaticamente quando aumenta a tela?

Se voce programar os componentes que voce quer que aumente com grow x ou y, sim.

Já que esse é o tópico mais recente sobre o MigLayout, não criarei outro parecido…
Tô aprendendo a usar o MigLayout e estou tendo dificuldade mesmo seguindo o Quick Start (que está errado!, ou a minha lib tá bugada).

Tentei fazer esse simples exemplo, mas não consegui. O “comp2” não ocupa 2 colunas. Fica do mesmo tamanho do “comp1” e do “comp3”. É como se houvesse só 3 colunas.

panel.add(comp1)
panel.add(comp2, "span 2") // The component will span two cells. -> // Necessita da correção do Marky
panel.add(comp3, "wrap")   // Wrap to next row 
panel.add(comp4, "span")   // Span without "count" means span whole row

O código deveria ser algo assim (seguindo a documentação e corrigindo o que o Marky falou):

[code]
panel.setLayout(new MigLayout(“wrap 4”));

panel.add(new JButton(“1”));
panel.add(new JButton(“2”), “spanx 2, growx”); // -> Aqui a correção do Marky
panel.add(new JButton(“3”), “wrap”);
panel.add(new JButton(“4”), “spanx, growx”);[/code]
link do quick start:
http://www.miglayout.com/QuickStart.pdf

Uma forma de usar com facilidade o MigLayout é usar o plugin WindowBuilder do Eclipse. Ele facilita o uso do MigLayout mas não dispensa a leitura da documentação.

Obrigado pela dica.
Porém, faço questão de entender como esse gerenciador funciona, pois terei que fazer uma tela dinâmica, que muda conforme muda-se o item escolhido numa combo.