La rilevazione del trascinamento avviene attraverso una funzione mouseDrag, simile alla funzione di rilevazione del click. In particolare, ha gli stessi argomenti:
public boolean mouseDrag(Event e, int x, int y) {
Graphics g=new Graphics();
istruzioni
return true;
}
Questa funzione viene attivata quando viene rilevato
un movimento del mouse mentre il pulsante è tenuto
premuto. È anche importante notare che questa
funzione non viene attivata in tutti i
punti attraversati dal cursore. Si può dire che
vale invece l'inverso: se la funzione viene attivata
(ossia si eseguono le istruzioni al suo interno) allora
vuol dire che il punto di coordinate x e
y è stato attraversato mentre il pulsante
è stato tenuto premuto.Il seguente esempio PuntiDrag.java disegna dei punti nelle posizioni in cui il mouse viene premuto, come fa anche PuntiMouse.java. In più, disegna dei punti anche se il cursore viene spostato tenendo il pulsante premuto.
/*
Disegna dei punti, sulla base del click del mouse
*/
import java.awt.*;
public class PuntiDrag extends java.applet.Applet {
public boolean mouseDown(Event e, int x, int y) {
Graphics g=getGraphics();
g.fillRect(x-2,y-2,4,4);
return true;
}
public boolean mouseDrag(Event e, int x, int y) {
Graphics g=getGraphics();
g.fillRect(x-2,y-2,4,4);
return true;
}
}
Un possibile miglioramento è quello di fare in modo che i punti non vengano cancellati ogni volta che la finestra diventa invisibile. È chiaramente sufficiente introdurre delle variabili globali per rappresentare i punti, e una funzione paint che li ridisegna ogni volta.