How can I listen to a TAB key pressed/typed in Java?

て烟熏妆下的殇ゞ 提交于 2019-11-28 02:28:23

问题


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

    }

What is the simplest way in an java gui to capture the tab key without doing using the focus listening technique?


回答1:


VK_TAB is the tab constant.

However: 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.

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

To solve this, apply the following to the component that is firing the key events (e.g., the TextArea):

.setFocusTraversalKeysEnabled(false)

Using this method, you must then handle focus traversal explicitly. Alternatively, the KeyEventDispatcher class can be used to pre-listen to all key events.




回答2:


In case of editable JComboBox, this one worked for me:

    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) {

        }
       }
    });


来源:https://stackoverflow.com/questions/8275204/how-can-i-listen-to-a-tab-key-pressed-typed-in-java

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!