web-dev-qa-db-ja.com

Java jtreeでCTRL + Xキーの組み合わせを検出する

いつ検出するキーボードハンドラーを追加する方法の例が必要です Ctrl+C 、 Ctrl+X 、 Ctrl+C JTreeを押した。

以前はメニューショートカットキーを使用してこれを行いましたが、成功しませんでした。

17
ShirazITCo

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) {
            }
        });
29
MeBigFatGuy

たとえば、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");

            }
        }
    });

お役に立てば幸いです。

13
MOHAMED FATHEI

Key Bindings を使用します。

3
camickr
    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;
        }
    });

しかし、メニューショートカットアクセラレータは、これを通常行う方法です:myMenuItem.setAccelerator(KeyStroke.getKeyStroke("control C"));

0
Joel