Согласно этот класс :
<code>/**
* Some components treat tabulator (TAB key) in their own way.
* Sometimes the tabulator is supposed to simply transfer the focus
* to the next focusable component.
* <br/>
* Here s how to use this class to override the "component's default"
* behavior:
* <pre>
* JTextArea area = new JTextArea(..);
* <b>TransferFocus.patch( area );</b>
*
* Это должно сработать.
* На этот раз используются сочетания клавиш.
* Более элегантное решение, чем TabTransfersFocus ().
*
* @author kaimu
* @since 2006-05-14
* @version 1.0
* /
открытый класс TransferFocus {
/ **
* Патч поведения компонента.
* TAB переводит фокус на следующий фокусируемый компонент,
* SHIFT + TAB переводит фокус на предыдущий фокусируемый компонент.
*
* @param c Компонент, который будет исправлен.
* /
публичный статический void patch (Компонент c) {
Set
штрихи = новый HashSet (Arrays.asList (KeyStroke.getKeyStroke ("нажатая вкладка")));
c.setFocusTraversalKeys (KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS, штрихи);
обводки = новый HashSet (Arrays.asList (KeyStroke.getKeyStroke ("нажатие клавиши TAB")));
c.setFocusTraversalKeys (KeyboardFocusManager.BACKWARD_TRAVERSAL_KEYS, штрихи);
}
}
Обратите внимание, что patch()
может быть еще короче, согласно Джошуа Голдбергу в комментариях , поскольку цель состоит в том, чтобы вернуть поведение по умолчанию, переопределенное JTextArea
:
component.setFocusTraversalKeys(KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS, null);
component.setFocusTraversalKeys(KeyboardFocusManager.BACKWARD_TRAVERSAL_KEYS, null);
Это используется в вопросе " Как мне изменить поведение клавиши табуляции в JTextArea
? "
Предыдущая действительно включала Listener
, а transferFocus()
:
/**
* Override the behaviour so that TAB key transfers the focus
* to the next focusable component.
*/
@Override
public void keyPressed(KeyEvent e) {
if(e.getKeyCode() == KeyEvent.VK_TAB) {
System.out.println(e.getModifiers());
if(e.getModifiers() > 0) a.transferFocusBackward();
else a.transferFocus();
e.consume();
}
}
e.consume();
могло бы быть тем, что вы упустили, чтобы заставить его работать в вашем случае.