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

Posted

技术标签:

【中文标题】如何收听在 Java 中按下/键入的 TAB 键?【英文标题】:How can I listen to a TAB key pressed/typed in Java? 【发布时间】:2012-01-06 16:39:08 【问题描述】:
    private void jTextField1KeyPressed(java.awt.event.KeyEvent evt)
    
        //cant capture my TAB?
        System.out.print(evt.getKeyChar());

    

在不使用焦点侦听技术的情况下,在 java gui 中捕获 tab 键的最简单方法是什么?

【问题讨论】:

【参考方案1】:

如果是可编辑的 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) 

        
       
    );

【讨论】:

【参考方案2】:

VK_TAB 是制表符常量。

但是:No Tab key-pressed or key-released events are received by the key event listener. This is because the focus subsystem consumes focus traversal keys, such as Tab and Shift Tab.

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

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

.setFocusTraversalKeysEnabled(false)

使用此方法,您必须显式处理焦点遍历。或者,KeyEventDispatcher 类可用于预听所有关键事件。

【讨论】:

以上是关于如何收听在 Java 中按下/键入的 TAB 键?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 PowerShell 中键入 TAB 字符?

vba中tab空格怎么设置

如何检测是不是在 C++ 中按下了除特定键盘键之外的任何键盘键?

如何防止在WinForms TextBox中按下alt键引起的哔声?

如何检查是不是已在 Ruby 和 Windows 控制台中按下箭头键

javascript 怎样实现按tab跳转