Frage

G'day alle,

Nach dem Lernen hier, dass die Java-Konsole nicht Tastatureingabe sehr viel unterstützt, wechselte ich Swing und AWT. Mein Problem ist nun, wie zu erkennen, wenn die Tastatur Richtungstasten (nicht-numerische Tastatur) verwendet werden. Mein Code (unten) tut nicht mehr als ein „kleines Feld“ Zeichen gedruckt werden, wenn die nach unten drücken, oben, links, rechts Tasten. Dieser kleine Box Charakter unterscheidet sich nicht von dem Charakter durch die STRG und ALT-Taste verwendet, zum Beispiel. Wer weiß, was die Identität der Tastatur Richtungstasten tatsächlich so ist, dass ich für sie in meiner Anwendung codieren können?

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class KeyChecker extends JFrame {
    JLabel keyLabel = new JLabel("Hit any key");

    public KeyChecker() {
        super("Hit a Key");
        setSize(300, 200);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setLayout(new FlowLayout(FlowLayout.CENTER));
        KeyMonitor monitor = new KeyMonitor(this);
        setFocusable(true);
        addKeyListener(monitor);
        add(keyLabel);
        setVisible(true);
    }

    public static void main(String[] arguments) {
        new KeyChecker();
    }
}

class KeyMonitor extends KeyAdapter {
    KeyChecker display;

    KeyMonitor(KeyChecker display) {
        this.display = display;
    }

    public void keyPressed(KeyEvent event) {
        display.keyLabel.setText("" + event.getKeyChar());
        display.repaint();
    }
}
War es hilfreich?

Lösung

Was Sie tun sollten, sehen Sie die virtuellen Tastencode anstatt der Schlüsselzeichen, in keyPressed. Wie so:

public void keyPressed(KeyEvent event) {
    switch (event.getKeyCode()) {
        case KeyEvent.VK_UP:
            // up arrow
            break;
        case KeyEvent.VK_DOWN:
            // down arrow
            break;
        case KeyEvent.VK_RIGHT:
            // right arrow
            break;
        case KeyEvent.VK_LEFT:
            // left arrow
            break;
    }
}

Siehe http: // java. sun.com/javase/6/docs/api/java/awt/event/KeyEvent.html für vollständige Informationen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top