Tangentbordslyssnare

För att lyssna på tangentbordshändelser måste man definiera en klass som implementerar gränssnittet java.awt.event.KeyListener:

interface KeyListener {
  void keyPressed(KeyEvent e);
  void keyReleased(KeyEvent e);
  void keyTyped(KeyEvent e);
}

Ett objekt av denna klass installeras sedan som lyssnare i en komponent med addKeyListener. Därefter anropas ovanstående metoder av runtimesystemet då användaren trycker ner eller släpper upp en tangent; keyTyped anropas efter fullbordad tryckning. En enda tangentnedtryckning med följande “släpp” ger alltså upphov till flera händelser.

Oftast är man intresserad av att lyssna på bara en av ovanstående händelser (i vårt fall själva nedtryckningen). Det är då bekvämt att definiera lyssnarklassen genom att utvidga KeyAdapter, som har en tom implementation av alla tre metoderna och sedan omdefiniera bara en av dem.

Argumentet e innehåller information om vilken tangent som berörs. KeyEvent har en metod getKeyChar som returnerar det aktuella tecknet. Denna är dock inte alltid lämplig eftersom vissa tangenter inte svarar mot ett tecken (t.ex. Shift- och piltangenterna). För dessa kan man i stället använda getKeyCode, som ger ett heltal representerande tangenten i fråga. Kodningen av tangenter som heltal ges som konstanter i klassen KeyEvent. Shift-tangenten är VK_SHIFT, vänsterpilen VK_LEFT, ‘a’ är VK_A (det finns inget behov av att skilja på stora och lilla ‘a’; som tangent är det samma) osv.

Menu