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

Capitolo 24: KeyEvent.

 

Gli eventi KeyEvent sono quelli generati dalla pressione dei tasti 'classici', comuni a tutti i dispositivi MIDP, quali cellulari e palmari: i numeri da 0 a 9, l'asterisco * e il 'cancelletto' #.

 

In molti cellulari (come quello dell'emulatore WTK, per esempio) mettono poi a disposizione mini-joystick o una pulsantiera centrale: J2ME ci permette di gestire anche questi pulsanti, ma con gli ActionEvent, come vedremo nel prossimo capitolo.

 

 

Torniamo ai KeyEvent: in J2ME esistono delle costanti, definite nella classe Canvas, per identificare i pulsanti del tastierino, che trovate elencate qui di seguito:

  • KEY_NUM0, ..., KEY_NUM9 --- per i tasti-numeri da 0 a 9;
  • KEY_POUND --- identifica il tasto # ('cancelletto');
  • KEY_STAR --- identifica l'asterisco *.

 

 

Per gestire i KeyEvent bisogna implementare tre metodi della classe Canvas (per cui la vostra classe principale dovrà estendere Canvas o dovrete creare una classe che la estenda), ed è qui che entrano in gioco le costanti appena menzionate.

Ecco i tre metodi implementabili (non dovete implementarli per forza TUTTI, ma solo quelli che vi servono):

keyPressed(int keyCode)   :   void Lanciato alla pressione di un tasto.
keyReleased(int keyCode)   :   void Lanciato quando un tasto viene rilasciato.
keyRepeated(int keyCode)   :   void Lanciato quando un tasto viene tenuto premuto.

 

Per scoprire se il dispositivo attualmente in uso supporta la ripetizione dei tasti, è possibile utilizzare il metodo:

  • hasRepeatEvents()   :   boolean;

 

Il codice riportato qui di seguito definisce una MIDlet composta da due classi: "Prova" (classe principale del progetto), che istanzia un oggetto MiaCanvas e lo aggancia al Display, e MiaCanvas, che estende da Canvas e gestisce gli eventi da tastierino; cliccando col mouse sul pulsante 1 del tastierino comparirà, nella GUI del WTK, la scritta "Premuto tasto 1"; cliccando sugli altri pulsanti non accadrà nulla (è gestito solo il tasto 1 nello switch, per limitare il numero di linee di codice da ricopiare qui):

import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;


public class Prova extends MIDlet
{
private Display d;
private Canvas miaCanvas;

public Prova()
{
miaCanvas = new MiaCanvas();
d = Display.getDisplay(this);
d.setCurrent(miaCanvas);
}

protected void startApp()
{
}

protected void pauseApp() { }

protected void destroyApp(boolean arg0)
{
notifyDestroyed();
}
}


class MiaCanvas extends Canvas
{
public MiaCanvas() // Costruttore
{
}

protected void paint(Graphics g) // Le classi che ereditano da Canvas devono sovrascrivere questo metodo
{
}

protected void keyPressed(int keyCode)
{
switch (keyCode)
{
case Canvas.KEY_NUM1:
System.out.println("Premuto tasto 1");
break;
}
}
}

 

 

 
Vai all'inizio della pagina