Eu tenho um JFrame que já foi dado o setVisible(true), porém eu preciso manipular alguns componentes da tela depois que eles ja estão visiveis, tipo alterar tamanho e posição. Como eu faço para que os componenetes sejam repintado na tela com o novo tamanho?
eu já chamei o repaint() do JFrame mas não mudou nada.
Mesmo depois que um componente já foi exibido, você pode alterar o seu tamanho. Você não irá precisar chamar o método repaint(), pois ele será chamado automaticamente quando houver alguma mudança na tela. Você só presirará se preocupar em aumentar o tamanho do componente.
Segue um exemplo de um janela com uma caixa de texto e um botão (que aumenta o tamanho da caixa de texto).
import java.awt.FlowLayout;
import java.awt.Rectangle;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTextField;
public class Main extends JFrame {
JTextField txt;
JButton btn;
public Main () {
super("Teste");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(400,400);
setLayout(null);
txt = new JTextField(5);
txt.setBounds(10,10,20,20);
add(txt);
btn = new JButton("Aumentar");
btn.setBounds(100,50,100,20);
btn.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
int width = txt.getWidth() + 10;
int height = txt.getHeight();
txt.setSize(width,height);
}
});
add(btn);
}
public static void main(String[] args) {
Main starter = new Main();
starter.setVisible(true);
}
}