Обнаружение клавиш клавиатуры с помощью клавиши - PullRequest
1 голос
/ 22 февраля 2009

G'day all,

Узнав, что консоль Java не очень хорошо поддерживает ввод с клавиатуры, я переключился на Swing и AWT. Моя проблема сейчас заключается в том, как определить, когда используются клавиши управления курсором (не цифровая клавиатура). Мой код (ниже) не делает больше, чем печатает символ «маленькое поле» при нажатии клавиш «вниз», «вверх», «влево» и «вправо» Этот символ маленького прямоугольника ничем не отличается от символа, используемого, например, клавишами CTRL и ALT. Кто-нибудь знает, что на самом деле обозначает клавиатура, чтобы я мог кодировать их в своем приложении?

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

1 Ответ

2 голосов
/ 22 февраля 2009

Что вам нужно сделать, это посмотреть на код виртуальной клавиши , а не символ клавиши, в keyPressed. Вот так:

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

См. http://java.sun.com/javase/6/docs/api/java/awt/event/KeyEvent.html для полной информации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...