Alterar tamanho de um componente ja exibido

Bom dia…

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.

Obrigado…

Utilize o método setBounds.

import javax.swing.*;
import java.awt.event.*;
import java.awt.*;


public class Janela extends JFrame {
	private JButton cmdbotao;


	public Janela() {

		super();
		cmdbotao = new JButton("Redimensionar");
		cmdbotao.setBounds(20,20,100,100);

		
		setLayout(null);
		getContentPane().add(cmdbotao);
		
		setBounds(50,50,400,400);

		setVisible(true);


		cmdbotao.addActionListener(new ActionListener() {

			public void actionPerformed(ActionEvent e) {

				cmdbotao.setBounds(80,80,200,200);

			}
		});

		

	}


	public static void main(String[] args) {

		new Janela();
	}


}

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

}