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

Rispondi quotando