Dúvida com organização dos componentes no mig layout

Boa tarde, estou tentando fazer com que um componente tenha o tamanho máximo possível no painel, mas só consigo que ele tenha o tamanho máximo da grid do mig layout.
Por exemplo, fiz um teste (na imagem abaixo) usando flowx, mas mesmo assim o componente só cresceu até o tamanho máximo da grid de componentes.
Tem algum jeito de fazer isso?
Obrigado.


[code] public void teste(){
JFrame te = new JFrame();
te.setDefaultCloseOperation(te.EXIT_ON_CLOSE);
JPanel paL = new JPanel(new BorderLayout());
JPanel paO = new JPanel(new BorderLayout());

	JPanel labels = new JPanel(new GridLayout(2,1));
	JPanel texts = new JPanel(new GridLayout(2,1));
	
	labels.add(new JLabel("asdadas"));
	labels.add(new JLabel("asdadas"));
	
	texts.add(new JTextField("asdadas"));
	texts.add(new JTextField("asdadas"));
	
	paL.add(texts,BorderLayout.NORTH);
	paO.add(labels,BorderLayout.NORTH);
	
	te.setLayout(new BorderLayout());
	
	te.add(paL,BorderLayout.CENTER);
	te.add(paO,BorderLayout.WEST);
	
	
	te.setSize(200, 200);
	te.setVisible(true);
	
}[/code]

roda esse método!
abraços!

Opa cara, esse é o resultado que eu quero… só que queria fazer usando o mig layout…

Mas mesmo assim valeu :slight_smile:

Abraços

Ja tentou.

new MigLayout("grow");

Pra falar a verdade, voce nem precisava passar esse parametro, os componentes já tem grow e se ajustam de acordo com o tamanho do JPanel, coloque uma Border nele e veja se realmente ele esta indo até o final do componente, se não estiver o problema é como voce coloca o Jpanel no Container e não os Components no Panel.

Hum, eu testei com o grow como vc colocou, mas dá exceção de IllegalConstraint.

Coloquei as bordas, e realmente os componentes não vão até o fim. No screenshot abaixo o JPanel está sobre o JFrame sem layout. Mas eu testei com GridLayout, BorderLayout, FlowLayout e MigLayout e dá no mesmo :frowning:


Como voce adiciona o JPanel no JFrame?

E a borda voce colocou só nos componentes? Coloque no Jpanel, voce vai ver o tamanho exato dele.

O JPanel tá tomando conta de todo o espaço mesmo.
Coloquei o JPanel dentro de um JScrollPane e esse JScrollPane dentro de um JTabbedPane, e esse que está sobre o JFrame.
Anexei o código, pra facilitar :slight_smile:

Abraço

Voce precisa passar o grow para os componentes que voce quer que aumente dentro do JPanel.

	    panel.add(this.label1);
	    panel.add(textfield1,"wrap,grow");
	    panel.add(this.label2);
	    panel.add(textfield2,"grow");
	    panel.add(this.label3);
	    panel.add(textfield3,"wrap,grow");
	    panel.add(this.label4);
	    panel.add(textfield4,"grow");

Com esse código só os JtextFields crescem.

Eu fiz isso tb, mas mesmo assim, fica a mesma coisa. No caso, eu quero que só o campo Serie cresça até a largura total do frame.
Segue o screenshot de como ficou com o código que vc postou (tirei o grow dos outros campos, mas já tinha testado com eles).

Abraço.


Hmm… coloca growx então.

O growx também não funciona, o miglayout só cresce no máximo até a quantidade de elementos que estão inseridos, e eu quero que o segundo elemento cresça até a largura total do painel. Eu usei “fill” e também usei “fillx” no construtor, mas apesar de eu ter conseguido que o textfield ocupasse toda a largura, os label’s ficaram muito separados dos jtextfield’s. Estou mandando o screen, queria que a label ficasse próxima do jtextfield. Vlw


Voce pode mudar o align, colocar right nos labels.

O alinhamento ainda deixa a interface muito feia, porque o label fica próximo do jtextfiel, porém fica uma grande lacuna atrás dele. Eu quero por exeplo que o label fique “encostado” no canto esquerdo do painel, e logo em seguida venha o jtextfield ocupando todo o espaço que falta até o canto direito.

o mesmo exemplo acima com mig layout
bem facilzinho
hehehe

	public void teste(){
		JFrame te = new JFrame();
		te.setDefaultCloseOperation(te.EXIT_ON_CLOSE);
		JPanel paL = new JPanel(new BorderLayout());
		JPanel paO = new JPanel(new BorderLayout());
		
		JPanel labels = new JPanel(new MigLayout());
		JPanel texts = new JPanel(new MigLayout());
		
		labels.setBorder(BorderFactory.createEtchedBorder());
		texts.setBorder(BorderFactory.createEtchedBorder());
		
		labels.add(new JLabel("asdadas"),"wrap");
		labels.add(new JLabel("asdadas"),"wrap");
		
		texts.add(new JTextField("asdadas"),new CC().wrap().width("100%"));
		texts.add(new JTextField("asdadas"),new CC().wrap().width("100%"));
		
		paL.add(texts,BorderLayout.NORTH);
		paO.add(labels,BorderLayout.NORTH);
		
		te.setLayout(new BorderLayout());
		
		te.add(paL,BorderLayout.CENTER);
		te.add(paO,BorderLayout.WEST);
		
		
		te.setSize(200, 200);
		te.setVisible(true);
		
	}

ou assim velhinho, e confesso qeu se eu fizesse uma aplicação faria assim!

public void teste(){
		JFrame te = new JFrame();
		te.setDefaultCloseOperation(te.EXIT_ON_CLOSE);
		te.setLayout(new MigLayout());
		
		te.add(new JLabel("asdadas:"),"align right");
		te.add(new JTextField("asdadas"),new CC().wrap().width("100%"));
		
		te.add(new JLabel("asdadasssssssssss:"),"align right");
		
		
		te.add(new JTextField("asdadas"),new CC().wrap().width("100%"));
		
		te.setSize(200, 200);
		te.setVisible(true);
		
	}

Opa, valeu. Isso respondeu minha dúvida. Consegui fazer o que eu queria.^^

Eu coloquei o seu último código, mas quando eu coloco o campo nome para crescer 100%, ele só cresce no máximo até o tamanho do comboBox do campo série. Tem alguma forma de fazê-lo crescer toda a largura do painel sem utilizar outro layout, ou seja, na foto abaixo o textField crescer toda a largura do painel?


spanx