Java Swing: ¿Cómo evitar la copia del sistema, cortar, pegar la acción?
-
26-10-2019 - |
Pregunta
Por lo tanto, estoy tratando de evitar que el usuario pueda usar las acciones predeterminadas del sistema presionando el control + C, el control + x, el control + V.
Quiero cualquier lugar dentro de este desplazamiento particular, para atrapar la llave. El ScrollPane carga un componente en sí mismo, por ejemplo, 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
}
});
Sin embargo, no se imprime nada.
Agregué el mismo Keylistener a un JTree, pero está funcionando para eso.
ACTUALIZAR:
Entonces, usando Keybinds, ¿cómo hago que aparezca un joptionPane?
scrollPane.getInputMap(JComponent.WHEN_FOCUSED)
.put(KeyStroke.getKeyStroke(KeyEvent.VK_C, KeyEvent.CTRL_DOWN_MASK),
JOptionPane.showMessageDialog(null, "disabled"));
Solución
Mejor serían implementos Atajos de teclado más bien que Keylistener, porque
1) KeyListener
funciona solo cuando JComponent
posee Focus
en la ventana,
2) Usted establece KeyListener
a JScrollPane
en vez de JTree
3) Para las transbordadores de teclas, puede establecer InputMap y ActionMap para
al contenedor de toplevel (
JFrame, JDialog, JWindow
)concreto
JComponent
(s)
4) para KeyListener
y KeyBindings
Este contenedor de nivel superior debe centrarse en la pantalla
5) Entonces puede configurar para requerido event(s)#consume()
;
Otros consejos
Debe adjuntar su controlador de transferencia personalizado que anulará getCutAction
y getCopyAction
Para todos sus casos de JComponent, desea evitar que la copia/pegar del usuario.
Por favor, eche un vistazo aquí para obtener más detalles: http://docs.oracle.com/javase/1.5.0/docs/guide/swing/1.4/dnd.html#clipboardtransfersupport