【问题标题】:How can I listen to a TAB key pressed/typed in Java?如何收听在 Java 中按下/键入的 TAB 键?
【发布时间】: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 键的最简单方法是什么?

【问题讨论】:

    标签: java focus traversal keylistener keyevent


    【解决方案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 类可用于预听所有关键事件。

      【讨论】:

        猜你喜欢
        • 2013-07-22
        • 2011-02-26
        • 2020-11-18
        • 2023-03-28
        • 1970-01-01
        • 1970-01-01
        • 2016-03-06
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多