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.

 

Pagina di Francesco Milanese (redbaron85) su Facebook   Pagina di Francesco Milanese (redbaron85) su Google Plus   Profilo di Francesco Milanese (redbaron85) su LinkedIn   Pagina di Francesco Milanese (redbaron85) su Twitter   Canale Youtube di Francesco Milanese (redbaron85ct)

Vai all'inizio della pagina