Verrà usato Jpanel come area di disegno, nella quale l’utente trascinando il mouse potrà disegnare. Inoltre verranno utilizzati gli ascoltatori degli eventi.
Personalizzando Jpanel per renderlo un area di disegno occorrerà sovrascrivere il metodo paintComponent.
Il seguente file verra salvato come Paint.java
import java.awt.Point;
import java.awt.Graphics;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionAdapter;
import javax.swing.JPanel;
public class Paint extends JPanel
{
private int contaPunti = 0; // Conta il numero di punti
// array di 10000 riferimenti a java.awt.Point
private Point punti[] = new Point[ 100000 ];
//Imposta l’interfaccia grafica e registra il gestore degli eventi per il mouse
public Paint()
{
// gestore dei movimenti del mouse
addMouseMotionListener(
new MouseMotionAdapter()
{
//memorizza le coordinate del trascinamento del mouse e le ridisegna
public void mouseDragged( MouseEvent event )
{
if ( contaPunti < punti.length )
{
punti[ contaPunti ] = event.getPoint(); // trova il punto
contaPunti++; // incrementa il numero di punti nell’array
repaint(); // ridisegna JFrame
}
}
}
);
}
// disegna un ovale in un rettangolo alla posizione specificata
public void paintComponent( Graphics graph )
{
super.paintComponent( graph ); // pulisce l’area di disegno
//disegna tutti i punti nell’array
for ( int i = 0; i < contaPunti; i++ )
graph.fillOval( punti[ i ].x, punti[ i ].y, 4, 4 ); //rettangolo 4×4
}
}