Boa noite pessoal do forum, estou tentando redimensionar um campo em tempo de execução, é possível mesmo fazer isso. Estou tentando isso através do metodo setSize do componente e chamando o metodo repaint(), mas nada acontece, alguém poderia me da alguma idéia ou indicar alguma fonte, já pesquisei no google e em alguns foruns, mas não encontrei nada nesse sentido.
Não sei seu código, então sugiro tentar dar um revalidate() no JPanel onde o JTextField está.
E um codigo simples, quando o kara seleciona uma opção da comboxCombox, redimensiona o campo usando setSize() do componente e depois o repaint() do mesmo, esta alterando a dimensão porem quando clico em outro campo volta a dimensão anterior, usei o revalidate() no jpanel apos usar o setSize(), porem o campo não se redimensiona.
Use o setColumns(int num) do JTextfield e não o setSize, fiz um código tosco abaixo de exemplo, e está funcionando, teste aí e qualquer dúvida responda.
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class FrmTeste extends JFrame
{
private JPanel pn;
private JComboBox<Integer> cboNum;
private JTextField txtTexto;
public FrmTeste()
{
super();
setPreferredSize(new Dimension(800,600));
add(getPn(),BorderLayout.CENTER);
setVisible(true);
setDefaultCloseOperation(EXIT_ON_CLOSE);
pack();
}
private JPanel getPn()
{
if (pn==null)
{
pn = new JPanel();
pn.add(getCboNum());
pn.add(getTxtTexto());
}
return pn;
}
private JComboBox<Integer> getCboNum()
{
if (cboNum==null)
{
Integer[] itens = {1,2,3,4,5,6,7,8,9};
cboNum= new JComboBox<Integer>(itens);
cboNum.addActionListener(new ActionListener()
{
@Override
public void actionPerformed(ActionEvent arg0)
{
Integer sel = (Integer) cboNum.getSelectedItem();
getTxtTexto().setColumns(sel);
getPn().revalidate();
}
});
}
return cboNum;
}
private JTextField getTxtTexto()
{
if (txtTexto==null)
{
txtTexto= new JTextField();
}
return txtTexto;
}
}
Muito obrigado mrrbigu, funcionou beleza, vou pesquisar para saber porque o setSize não funciona e para conhecer melhor o swing também, mais uma vez obrigado.