Мне нужен пример, как добавить обработчик клавиатуры, который определяет, когда Ctrl + C , Ctrl + X , Ctrl + C нажат на JTree.
JTree
Я делал это раньше с помощью сочетаний клавиш, но безуспешно.
Вы можете добавить 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) { } });
Используйте 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"); } } });
Надеюсь, это поможет.
Использование Привязки клавиш .
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"));
myMenuItem.setAccelerator(KeyStroke.getKeyStroke("control C"));