private void jTextField1KeyPressed(java.awt.event.KeyEvent evt)
{
//cant capture my TAB?
System.out.print(evt.getKeyChar());
}
在Java GUI中,最简单的捕获Tab键的方式是什么,而不使用焦点监听技术?
private void jTextField1KeyPressed(java.awt.event.KeyEvent evt)
{
//cant capture my TAB?
System.out.print(evt.getKeyChar());
}
在Java GUI中,最简单的捕获Tab键的方式是什么,而不使用焦点监听技术?
VK_TAB是标签常量。
然而:键事件监听器不会接收到任何Tab键按下或释放事件。这是因为焦点子系统会消耗焦点遍历键,例如Tab和Shift Tab。
参见:http://docs.oracle.com/javase/tutorial/uiswing/events/keylistener.html
为解决此问题,请将以下内容应用于触发键事件的组件(例如TextArea):
.setFocusTraversalKeysEnabled(false)
使用此方法后,您必须显式地处理焦点遍历。 或者,可以使用 KeyEventDispatcher 类来预先监听所有键事件。
对于可编辑的JComboBox,这个方法适用于我:
txt.setFocusTraversalKeys(KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS, Collections.emptySet());
txt.getEditor().getEditorComponent().addKeyListener(new KeyAdapter() {
@Override
public void keyPressed(KeyEvent event) {
if (event.getKeyChar() == KeyEvent.VK_TAB) {
}
}
});