Java检测jtree上的CTRL + X组合键

时间:2011-05-11 21:20:20

标签: java keyboard-shortcuts jtree

我需要一个示例,如何添加一个键盘处理程序来检测 Ctrl + C Ctrl + X JTree上按下了 Ctrl + C

我之前使用菜单快捷键执行此操作但没有成功。

5 个答案:

答案 0 :(得分:26)

您可以将KeyListeners添加到任何组件(f)

        f.addKeyListener(new KeyListener() {

            @Override
            public void keyTyped(KeyEvent e) {
            }

            @Override
            public void keyPressed(KeyEvent e) {
                if ((e.getKeyCode() == KeyEvent.VK_C) && ((e.getModifiers() & KeyEvent.CTRL_MASK) != 0)) {
                    System.out.println("woot!");
                }
            }

            @Override
            public void keyReleased(KeyEvent e) {
            }
        });

答案 1 :(得分:12)

使用KeyListener例如:

jTree1.addKeyListener(new java.awt.event.KeyAdapter() {

        public void keyPressed(java.awt.event.KeyEvent evt) {
            if (evt.isControlDown() && evt.getKeyCode() == KeyEvent.VK_C) {

                JOptionPane.showMessageDialog(this, "ctrl + c");

            } else if (evt.isControlDown() && evt.getKeyCode() == KeyEvent.VK_X) {

                JOptionPane.showMessageDialog(this, "ctrl + x");

            } else if (evt.isControlDown() && evt.getKeyCode() == KeyEvent.VK_V) {

                JOptionPane.showMessageDialog(this, "ctrl + v");

            }
        }
    });

希望有所帮助。

答案 2 :(得分:3)

使用Key Bindings

答案 3 :(得分:2)

    initComponents();
      KeyboardFocusManager ky=KeyboardFocusManager.getCurrentKeyboardFocusManager();

    ky.addKeyEventDispatcher(new KeyEventDispatcher() {

        @Override
        public boolean dispatchKeyEvent(KeyEvent e) {

             if (e.getID()==KeyEvent.KEY_RELEASED && (e.getKeyCode() == KeyEvent.VK_C) && ((e.getModifiers() & KeyEvent.CTRL_MASK) != 0)) {
                System.out.println("Dhanushka Tharindu");
            }
             return  true;
        }
    });

答案 4 :(得分:0)

但菜单快捷键加速器是正常执行此操作的方法:myMenuItem.setAccelerator(KeyStroke.getKeyStroke("control C"));