如何在Java中监听TAB键的按下/输入?

30
    private void jTextField1KeyPressed(java.awt.event.KeyEvent evt)
    {
        //cant capture my TAB?
        System.out.print(evt.getKeyChar());

    }

在Java GUI中,最简单的捕获Tab键的方式是什么,而不使用焦点监听技术?

2个回答

49

VK_TAB是标签常量。

然而:键事件监听器不会接收到任何Tab键按下或释放事件。这是因为焦点子系统会消耗焦点遍历键,例如Tab和Shift Tab。

参见:http://docs.oracle.com/javase/tutorial/uiswing/events/keylistener.html

为解决此问题,请将以下内容应用于触发键事件的组件(例如TextArea):

.setFocusTraversalKeysEnabled(false)

使用此方法后,您必须显式地处理焦点遍历。 或者,可以使用 KeyEventDispatcher 类来预先监听所有键事件。


0

对于可编辑的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) {

        }
       }
    });

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接