Buonasera a tutti, sono alle prime armi con Java e sto tentando, in poche parole, di creare una finestra, all'interno della quale vi sia un JButton e un'area di disegno. Cliccando sul JButton la figura (geometrica di base) deve cambiare da rettangolo a cerchio. Il mio codice non funziona, ve lo posto qui:
La finestra
codice:
import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.ObjectInputStream.GetField;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class Finestra extends JPanel{
    public static void main(String[] args) {
        JFrame window = new JFrame("Finestra");
        window.setLayout(new FlowLayout());
        window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        
        window.setSize(500, 500);
        
        
        JButton Ridisegna = new JButton("Cambia figura");
        
         Ridisegna.addActionListener(new ActionListener() {
         Rettangolo rettangolo = new Rettangolo();
            @Override
            public void actionPerformed(ActionEvent e) {
   
                window.getContentPane().removeAll();
                window.getContentPane().add(rettangolo);
                //window.getContentPane().validate();
            }
        });
        //window.getContentPane().add(new Rettangolo());
        
        window.add(Ridisegna);
        window.setVisible(true);
        
      }
}
Il codice per disegnare il rettangolo
codice:
import java.awt.Color;
import java.awt.Graphics;

import javax.swing.JComponent;


public class Rettangolo extends JComponent{

        public void paint(Graphics g) {
            super.paintComponent(g);
            g.drawRect (10, 10, 200, 200);
            //g.setColor(Color.red);
        }

}

e infine quello che disegna il cerchio...

codice:
import java.awt.Graphics;

import javax.swing.JComponent;
import javax.swing.JPanel;

public class Cerchio extends JComponent{
     public void cerchio(Graphics g) {
         super.paintComponent(g);
            g.drawOval (10, 10, 200, 200);  
          }
}
Per facilitare la comprensione del codice, in particolare di dove sia l'inizio e la fine delle classi ho messo titoli in neretto...

Grazie per l'aiuto,
ciao a tutti!
e Buone feste!