Aprendendo MigLayout

12 respostas
E

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

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

12 Respostas

M

Coloque “span 2,grow x”

E

grow x… representa o que Mark?

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

E

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

M

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.

E

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

N

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

:}

E

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

:}

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?

A

GALERA…

so uma pergunta…

o MigLayout redimenciona automaticamente quando aumenta a tela?

M

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

F

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.
Marky.Vasconcelos:
Coloque "span 2,grow x"
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
[img]http://img268.imageshack.us/img268/592/77335907.png[/img] O código deveria ser algo assim (seguindo a documentação e corrigindo o que o Marky falou):
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");
link do quick start: [url]http://www.miglayout.com/QuickStart.pdf[/url]
E

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.

F

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.

Criado 23 de abril de 2010
Ultima resposta 13 de mar. de 2012
Respostas 12
Participantes 6