Disegno di linee con il mouse

Il programma seguente è un esempio di uso della funzione mouseUp. Si vuole disegnare della linee nella finestra usando il mouse, in questo modo: l'utente preme il pulsante in un punto, e quello è il punto iniziale della linea. Tenendo premuto il pulsante, si sposta il cursore nel punto in cui si vuole che la linea finisca, e lí si rilascia il pulsante.

La funzione mouseDown viene usata per memorizzare il punto iniziale della linea. La funzione mouseUp può disegnare la linea usando la posizione in cui il mouse è stato premuto e quella in cui è stato rilasciato. Dal momento che la posizione iniziale viene memorizzata dalla funzione mouseDown e poi usata dalla funzione mouseUp, deve essere rappresentata usando variabili globali.

Usiamo quindi due variabili globali xi e yi per indicare la posizione in cui il pulsante è stato premuto. La funzione mouseDown si limita a memorizzare le coordinate in cui il pulsante è stato premuto (che è memorizzato nei suoi argomenti x e y) in queste variabili. La funzione mouseUp invece disegna la linea fra il punto iniziale (che è memorizzato in xi e yi) e il punto in cui il pulsante è stato sollevato, che è rappresentato dai suoi argomenti x e y. Il programma completo UpDown.java è riportato qui sotto.

/*
  Disegna linee fra i punti di pressione e
  rilasciamento del pulsante.
*/

import java.awt.*;

public class UpDown extends java.applet.Applet {
	/* punto iniziale della linea */
  int xi, yi;

	/* memorizza il punto iniziale della linea */
  public boolean mouseDown(Event e, int x, int y) {
    xi=x;
    yi=y;
   
    return true;
  }

	/* disegna la linea fra il punto iniziale e quello corrente */
  public boolean mouseUp(Event e, int x, int y) {
    Graphics g=getGraphics();

    g.drawLine(xi,yi,x,y);

    return true;
  }
}

Naturalmente, le linee disegnate vengono cancellate ogni volta che la finestra viene coperta o ridotta a icona. Per rendere le linee disegnate permanenti, occorre che siano disegnate anche dalla funzione paint, per cui è necessario usare quattro vettori per memorizzare le coordinate dei punti iniziali e finali di ogni linea.