Поэтому я пытаюсь запретить пользователю использовать системные действия по умолчанию, нажимая control + C, control + X, control + V.
Я хочу где-нибудь внутри этой конкретной полосы прокрутки поймать ключ. Панель scrollPane загружает Компонент в себя, например, JLabel.
scrollPane.addKeyListener(new KeyListener(){
@Override
public void keyPressed(KeyEvent evt) {
if (evt.isControlDown() && evt.getKeyCode() == KeyEvent.VK_C) {
System.out.println("disabled");
} else if (evt.isControlDown() && evt.getKeyCode() == KeyEvent.VK_X) {
System.out.println("disabled");
} else if (evt.isControlDown() && evt.getKeyCode() == KeyEvent.VK_V) {
System.out.println("disabled");
}
}
@Override
public void keyReleased(KeyEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void keyTyped(KeyEvent arg0) {
// TODO Auto-generated method stub
}
});
Однако ничего не печатается.
Я добавил тот же кейлист в Jtree, но он работает для этого.
UPDATE:
Итак, используя привязки клавиш, как заставить JoptionPane появляться?
scrollPane.getInputMap(JComponent.WHEN_FOCUSED)
.put(KeyStroke.getKeyStroke(KeyEvent.VK_C, KeyEvent.CTRL_DOWN_MASK),
JOptionPane.showMessageDialog(null, "disabled"));