Question

G'day tout,

Après avoir appris ici que la console Java ne prend pas en charge l'entrée du clavier beaucoup, je suis passé au Swing et AWT. Mon problème est maintenant de savoir comment détecter lorsque l'on utilise les touches de direction du clavier (clavier non numérique). Mon code (ci-dessous) ne caractère pas plus que d'imprimer une « petite boîte » en appuyant sur le bas, en haut, à gauche, les touches droite. Ce petit personnage de la boîte ne diffère pas du caractère utilisé par les touches CTRL et ALT, par exemple. Est-ce que quelqu'un sait ce que l'identité des touches de direction du clavier est en fait pour que je puisse coder pour eux dans mon application?

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();
    }
}
Était-ce utile?

La solution

Ce que vous devez faire est de regarder le code de touche virtuelle plutôt que le personnage principal, dans keyPressed. Comme ceci:

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;
    }
}

Voir http: // java. sun.com/javase/6/docs/api/java/awt/event/KeyEvent.html pour une information complète.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top