Salve a tutti ragazzi, mi chiamo Marco e sono nuovo sia del forum che di Java.
Sto facendo degli esperimenti con Swing ed in particolare con la creazione di una classe che estende JComponent. Per ora sono riuscito a fare un disegno, un semplice quadrato, realizzato dal metodo paintComponent. Vorrei però dotare il componente di un metodo pubblico che realizzi un ulteriore disegno a posteriori, dietro una chimata esplicita. Ma qui ottengo un errore. Vi riporto il codice delle due mini-classi. Spero che mi possiate dire dove sto sbagliando.

Grazie anticipatamante,

Marco

codice:
import javax.swing.JComponent;

import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Shape;
import java.awt.Color;
import java.awt.geom.Ellipse2D;

import java.awt.geom.Rectangle2D;

public class MyComponent extends JComponent{

	private static final long serialVersionUID = 1L;
	double latoQuadrato;
	double diametroCerchio;
	Graphics2D g2;
	public MyComponent(){
		latoQuadrato = 150.0;
	}
	 public void paintComponent(Graphics g)
	   {  
		  //disegna un quadrato
		 	g2 = (Graphics2D) g;
		 Shape quadrato = new Rectangle2D.Double(
				  100,100,
				  latoQuadrato,latoQuadrato);
		 	g2.setPaint(Color.red);
		    g2.draw(quadrato); 
	   }
	 
	 public void drawCircle(float raggio){
		 Shape circle = new Ellipse2D.Float(100.0f, 100.0f, raggio, raggio);
		 g2.draw(circle);
		 g2.setPaint(Color.green);
		 g2.fill(circle);
	 }
	
}

import javax.swing.JFrame;


public class DisegnaComponente {
	public static void main(String args[]) {
		JFrame frame = new JFrame();
		frame.setSize(600, 600);
		frame.setTitle("Prova nuovo componente");
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

		MyComponent component = new MyComponent();
// a questo punto provo un metodo pubblico 	
// per disegnare un cerchio, ma non funziona...	
		component.drawCircle(50.0f);
		frame.add(component);
		frame.setVisible(true);

		}
		}