Как добавить слушателя в JTextField для стрелки вверх, вниз, влево, вправо? - PullRequest
2 голосов
/ 16 декабря 2009

Мне нужно написать слушатель стрелок для моего JTextField. если попытаться с:

public void keyTyped(KeyEvent e) {
            if (e.getKeyCode() == KeyEvent.VK_DOWN) {
                ......
            }
}
...

Это не хорошо. (Я думаю, что JTextField не отвечает на специальный ключевой слушатель.)

Ответы [ 3 ]

4 голосов
/ 16 декабря 2009

Я знаю, что принятый ответ, приведенный выше, сработает, но это не так, как СЛЕДУЕТ делать в Swing. KeyListeners, как правило, следует использовать только в приложениях AWT, поскольку они не поддерживают более абстрактный API.

При использовании Swing вы ДОЛЖНЫ использовать привязки клавиш. Все компоненты Swing используют привязки клавиш. Запись в блоге Key Bindings содержит некоторые основные сведения о том, как их использовать, и содержит ссылку на учебник Swing «Как использовать привязки клавиш» для получения более подробной информации.

2 голосов
/ 16 декабря 2009

Вы должны использовать keyPressed или keyReleased здесь. Цитата из API-интерфейса SUN:

События типа «Key typed» являются высокоуровневыми и обычно не зависят от платформы или раскладки клавиатуры. Они генерируются при вводе символа Unicode

Поэтому метод keyTyped не будет вызываться для клавиш со стрелками, поскольку они не генерируют символы Юникода.

1 голос
/ 16 декабря 2009

Вы можете добавить свой собственный KeyListener с помощью addKeyListener метода, предусмотренного для каждого java.awt.Component. В вашем Слушателе используйте keyPressed.

Клавиши со стрелками являются клавишами действий, вы можете проверить это событие с помощью isActionKey:

Возвращает true, если клавиша, запускающая событие, является клавишей действия. Примеры клавиш действий: Вырезать, Копировать, Вставить, Page Up, Caps Lock, стрелка и функциональные клавиши . Эта информация действительна только для событий нажатых и отпущенных клавиш .

Смотри также: http://java.sun.com/docs/books/tutorial/uiswing/events/keylistener.html

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