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