Мне нужен пример того, как добавить обработчик клавиатуры, который обнаруживает, когда Ctrl + C, Ctrl + X, < kbd> Ctrl + C нажал на JTree
.
Раньше я делал это с помощью горячих клавиш меню, но безуспешно.
Мне нужен пример того, как добавить обработчик клавиатуры, который обнаруживает, когда Ctrl + C, Ctrl + X, < kbd> Ctrl + C нажал на 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) {
}
});
InputEvent.CTRL_MASK
устарел, расширенные модификаторы (например, InputEvent.CTRL_DOWN_MASK
) рекомендуется использовать сейчас. Раздражает, но факт. docs.oracle.com/javase/ 6 / документы / api / java / awt / событие /
- person ericsoco; 11.02.2013
if ((e.getKeyCode() == KeyEvent.VK_C) && ((e.getModifiers() & KeyEvent.CTRL_MASK) != 0)) { System.out.println("woot!"); } }
Относится к Alt + CTRL + C = CTRL + C. Предлагаемое решение фактически не может отличаться от каких-либо нескольких модификаторов. Используйте скорее @Override public void keyPressed(KeyEvent e) { if ((e.getKeyCode() == KeyEvent.VK_C) && ((e.getModifiers() | KeyEvent.CTRL_MASK) == KeyEvent.CTRL_MASK)) { System.out.println("woot!"); } }
- person Hans; 10.04.2015
Например, используйте 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");
}
}
});
Надеюсь, это поможет.
Но обычно это можно сделать с помощью ускорителей меню: myMenuItem.setAccelerator(KeyStroke.getKeyStroke("control C"));