NOTA! Questo sito utilizza i cookie e tecnologie simili.

Se non si modificano le impostazioni del browser, l'utente accetta. Per saperne di piu'

Approvo

Guida Java 2D - Capitolo 05: Catturare gli eventi da mouse e tastiera.

 

In questo capitolo parleremo della gestione degli eventi generati mediante mouse e tastiera.

 

Per gestire gli eventi da tastiera abbiamo a disposizione i seguenti strumenti:

  • KeyEvent, classe utilizzata per definire gli eventi (Java 'mappa' i tasti della tastiera su di un insieme di costanti predefinite);
  • KeyListener, listener (interfaccia) degli eventi, che ci 'obbliga' a riscrivere tre metodi;
  • KeyAdapter, classe Adapter che ci consente di riscrivere solo i metodi che ci servono dei tre 'obbligatori' di Listener.

 

 

Iniziamo dal set di costanti di KeyEvent: tali costanti sono tutte del tipo

  • VK_A, ..., VK_Z --- per le lettere (NOTA: VK sta per 'virtual key', 'tasto virtuale', ad indicare che si tratta della rappresentazione interna di Java);
  • VK_0, ..., VK_9 --- per i tasti numerici;
  • VK_PAGE_UP, VK_PAGE_DOWN, ...  --- tutti gli altri tasti hanno nomi specifici;

più altri valori che consentono di verificare se sono stati attivati dei modificatori (shift, ctrl, alt, ...); per un elenco completo, si rimanda alla documentazione ufficiale.

 

KeyEvent ci permette di individuare quale tasto è stato premuto mediante i metodi:

getKeyCode()   :   int Restituisce il valore (vd. costanti predefinite sopra) associato al tasto premuto.
getKeyChar()   :   char Restituisce il valore letterale (char) del tasto premuto.
getKeyText(int code)   :   String (metodo statico) Restituisce il valore sotto forma di String del codice di tasto passato come parametro.

 

I metodi di KeyListener da implementare sono i seguenti:

keyPressed(keyEvent e)    :   void Pressione di un tasto.
keyReleased(keyEvent e)   :   void Tasto rilasciato.
keyTyped(keyEvent e)   :   void Tasto 'digitato'.

 

Nel prossimo capitolo vedremo come creare e visualizzare un JFrame: potrete implementare e testare l'interfaccia KeyListener partendo dalla classe che verrà presentata in quella sede (per verificare la cattura degli eventi, potete utilizzare il metodo System.out.println per stampare a video un messaggio).

 

In maniera del tutto analoga a quanto visto per la tastiera, è possibile gestire gli eventi generati mediante mouse con i seguenti strumenti:

  • MouseEvent; classe utilizzata per definire gli eventi;
  • MouseListener, MouseMotionListener, MouseInputListener; vari listener (interfacce) delle azioni effettuate dal mouse (il più utilizzato, comunque, è il primo: MouseListener);
  • MouseAdapter, MouseMotionAdapter, MouseInputAdapter; classi adapter che implementano i listener appena elencati.

 

 

La classe MouseEvent fornisce i seguenti metodi per recuperare alcune informazioni utili:

getButton()   :   int Restituisce il codice del bottone premuto.
getClickCount()   :   int Restituisce il numero di click 'consecutivi' effettuati.
getPoint()   :   Point Restituisce le coordinate del pixel cliccato su schermo organizzate sotto forma di oggetto Point.
getX()   :   int Restituisce la coordinata X del pixel cliccato su schermo.
getY()   :   int Restituisce la coordinata Y del pixel cliccato su schermo.

 

Implementando MouseListener, occorrerà riscrivere i seguenti metodi (significati ovvi):

  • mouseClicked(MouseEvent e)   :   void
  • mouseEntered(MouseEvent e)   :   void
  • mouseExited(MouseEvent e)   :   void
  • mousePressed(MouseEvent e)   :   void
  • mouseReleased(MouseEvent e)   :   void

 

Una considerazione relativa al mouse: in Java è possibile impostare l'aspetto che dovrà assumere il cursore del mouse al passaggio sulle varie componenti.

 

La classe che gestisce l'aspetto del cursore è Cursor, con costruttore principale:

Cursor(int type)    :    void

mentre, per impostare il cursore di un componente, bisogna utilizzare il metodo di Component:

setCursor(Cursor c)   :   void

 

Java mette a disposizione diversi cursori predefiniti, tutti identificati mediante costanti intere definite nella classe Cursor (è a tali costanti che fa riferimento il parametro intero type presente nel costruttore di Cursor precedentemente trattato); è comunque possibile creare aspetti personalizzati per il cursore del mouse mediante il metodo di Toolkit:

createCustomCursor(Image cursor, Point hotSpot, String name)   :   Cursor

che permette di impostare l'Image cursor passata come parametro come aspetto visivo del cursore, hotSpot come punto sensibile e name come nome.

 

 
Vai all'inizio della pagina