LÄR DIG JAVA

Input från tangentbordet med KeyAdapter

KeyAdapter är en adapterklass med tomma metoder för tangentbordshändelser. Genom att ärva den kan vi skriva över just de metoder vi behöver. Metodernas namn och parametrar måste stämma; @Override hjälper kompilatorn att upptäcka misstag.

import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;

public class KeyInput extends KeyAdapter {

    Game game;

    public KeyInput(Game game){
        this.game = game;
    }

    public void keyPressed(KeyEvent e){
        game.keyPressed(e);
    }

    public void keyReleased(KeyEvent e){
        game.keyReleased(e);
    }

}

Lyssnaren registreras med addKeyListener på spelpanelen. Komponenten måste kunna få fokus och faktiskt ha fokus för att ta emot händelserna. Game använder setFocusable(true) och requestFocusInWindow efter att fönstret har visats.

KeyEvent.VK_LEFT och VK_RIGHT är konstanter, inte metoder. getKeyCode returnerar tangentens kod. Game lagrar vilka piltangenter som hålls nere, beräknar rörelsen i tick och rensar tillståndet när fokus förloras. Det undviker att en släppt tangent stoppar en annan som fortfarande hålls nere.

I större Swing-program är key bindings via InputMap och ActionMap ofta ett lämpligt alternativ till KeyListener.

Vanliga frågor om Input från tangentbordet med KeyAdapter

Vad handlar Input från tangentbordet med KeyAdapter om?

Hantera tangenttryckningar med KeyAdapter och KeyEvent i Java. Registrera lyssnare, hantera fokus och lagra tangenternas tillstånd.

Hur övar jag på Input från tangentbordet med KeyAdapter?

Kör exemplen själv, ändra ett värde i taget och jämför sedan resultatet med förklaringen på sidan.