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