Cominciamo con la funzione mouseUp. Questa funzione deve stampare la distanza fra il punto in cui è stato premuto il pulsante e quello in cui è stato sollevato. Questa funzione ha a disposizione le coordinate del punto di rilascio (nelle variabili x e y), ma non quelle del punto di click.
D'altra parte, le coordinate del punto di pressione sono note quando si esegue mouseDown. È quindi necessario fare in modo che mouseDown memorizzi queste coordinate in modo tale che mouseUp le possa usare. Usiamo quindi delle variabili globali, che si possono accedere sia da mouseDown che da mouseUp.
Riassumendo: mouseDown memorizza le coordinate del punto in cui si è premuto il pulsante in due variabili globali xpressione e ypressione; in mouseUp si calcola la distanza fra i punti (x,y), che è la coordinata del punto in cui il pulsante è stato lasciato, e (xpressione,ypressione). Il valore di questa differenza viene poi stampato.
Il programma finale Distanza.java contiene anche il disegno di una croce nel punto di pressione, croce che viene poi cancellata quando si lascia il pulsante del mouse.
/* Distanza fra due punti. */ import java.awt.*; public class Distanza extends java.applet.Applet { int xpremuto, ypremuto; public boolean mouseDown(Event e, int x, int y) { Graphics g=getGraphics(); g.drawLine(x-10,y,x+10,y); g.drawLine(x,y-10,x,y+10); xpremuto=x; ypremuto=y; return true; } public boolean mouseUp(Event e, int x, int y) { Graphics g=getGraphics(); double d; g.clearRect(xpremuto-10,ypremuto-10,21,21); g.clearRect(0,0,200,20); d=Math.sqrt((double) (x-xpremuto)*(x-xpremuto) + (y-ypremuto)*(y-ypremuto)); g.drawString(""+d,10,20); return true; } }