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