2012-04-03 3 views
1

У меня есть несколько разных текстовых полей ввода, в которые вы можете ввести команду, нажмите клавишу ввода, а затем вытащите некоторую информацию. У меня есть несколько разных текстовых полей, которые (применительно к различным частям информации). Когда я нажимаю кнопку ввода, он также перемещает фокус на следующее поле ввода. Как это остановить? Я не могу просто использовать метод потреблять() в KeyEvent классе, так что бы полностью блокировать клавишу ввода, который не то, что я хочуJava - создание текстового поля не теряет фокус

+0

Почему вы не используете 'keyevent.consume()' on 'keyvent.getKeyCode() == KeyEvent.VK_ENTER', а также вызываете метод, который извлекает информацию из вашего' KeyListener'? Или клавиша «Enter» делает что-то более интересное, чем вытягивание и отображение информации? –

+1

Вы попробовали [requestFocusInWindow (...)] (http://docs.oracle.com/javase/7/docs/api/javax/swing/JComponent.html#requestFocusInWindow())? –

+0

http://stackoverflow.com/questions/1068853/stopping-default-behavior-of-events-in-swing - интересное чтение. Ответ, одобренный akf, реализует мое предложение, решение привязки ключа camickr также очень хорошо. –

ответ

2

На самом деле, я только что узнал, как исправить эту проблему. Я использовал метод, принадлежащий контейнеру, называемый requestFocus() (см. http://www.javaworld.com/javaworld/jw-07-1998/jw-07-swing-focus.html). В каждом элементе я добавил эту строку в конец действия keyEvent, и она отлично работала!

+0

См. Также [* Как написать прослушиватель клавиш *] (http://docs.oracle.com/javase/tutorial/uiswing/events/keylistener.html), что делает подобное предложение. – trashgod

6

InputVerifier, описанный в Validating Input, предназначен именно для этой цели:

Верификатор ввода компонента запрашивается всякий раз, когда компонент собирается потерять фокус. Если значение компоненты не является приемлемым, вход верификатор может принять соответствующие меры, такие, как отказ дать фокус на компоненте ...

Дополнения: Как указывается в статье Text Validation, InputVerifier должна быть составной частью проверки , разработанный так, чтобы пользователь сразу понял, почему что-то не так.

+0

Очень хороший ответ, как всегда;). Теперь давайте подождем камикр хехехе. –

+1

* «Теперь давайте подождем camickr ..» * [Последний раз видели] (http://stackoverflow.com/users/131872/camickr) 21 февраля. –

+0

@ Аndrew, camickr и trashgod имеют тенденцию появляться вместе на сообщениях, которые я написал/прокомментировал, Это была шутка. Но позвольте мне остановить загрязнение stackoverflow hehehe. –

Смежные вопросы