2013-06-23 3 views
0

я добавил ENTER Ключ к FocusTraversalKeys по умолчанию как таковой ...Capture ENTER KeyEvent и делать Нажмите вместо

private void focus() { 
    Set forwardKeys = getFocusTraversalKeys(KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS); 
    Set newForwardKeys = new java.util.HashSet(forwardKeys); 
    newForwardKeys.add(KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0)); 
    setFocusTraversalKeys(KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS, newForwardKeys); 
} 

У меня есть информация о продукте форму, я прохожу с помощью фокус, но когда речь идет о к кнопке сохранения Я бы хотел, чтобы НАЖМИТЕ кнопку вместо фокуса, следующего на следующий компонент.

Я добавил Keypressed и KeyReleased слушателя к кнопке, а затем попытался это ...

private void saveButtonKeyPressed(java.awt.event.KeyEvent evt) {          
    if (evt.getKeyCode() == java.awt.event.KeyEvent.VK_ENTER) { 
     evt.consume(); 
     saveButton.doClick(); 
    } 
} 

Этот же метод работает на моей текстовой области, но код не делает замковый вместо ставит акцент на следующем компоненте, который также является кнопкой.

Пожалуйста, предложите что-то, что поможет мне достичь требуемого результата. Найдите ниже изображение используемой формы.

http://tinypic.com/r/33acqy9/5

+0

Вы можете установить ключи переноса фокусировки для кнопки по умолчанию (т.е. 'TAB'), что означает, что клавиша' ENTER' будет выполнять по умолчанию ... – MadProgrammer

+0

@MadProgrammer Это то, что я уже сделал, установите Focus Ключ обхода всего в этом фрейме для включения ключа ENTER. Я хочу сделать эффект «Space bar», когда дело доходит до Button, и не переносить Focus на следующий компонент. – HMH

+0

Вы также можете установить клавиши переноса фокусировки для отдельного компонента. Посмотрите на [answer by kleo] (http://docs.oracle.com/javase/7/docs/technotes/guides/jweb/packagingAppsForMac.html) для получения дополнительной информации. – MadProgrammer

ответ

0

Удалена клавиша ENTER из SET i, определяемая при нажатии кнопки Focus, и теперь она работает с KeyReleased Method.

private void saveButtonFocusGained(java.awt.event.FocusEvent evt) {          
    newForwardKeys.remove(KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0)); 
    setFocusTraversalKeys(KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS, newForwardKeys); 
} 

Благодарим всех вас за помощь!

1

Не используйте KeyListener. Swing был разработан для использования с Key Bindings.

Для получения некоторых решений можно воспользоваться Enter Key and Button, используя ключевые привязки, а другой - с использованием другого подхода.

+0

Пробовал использовать класс DefaultButtonListener в ссылке, которую вы но это не помогло. – HMH