JavaSwing:如何防止系统复制、剪切、粘贴操作?
因此,我试图通过按control+C、control+X、control+V来阻止用户使用默认的系统操作 我想在这个特殊的滚动窗格中的任何地方,抓住钥匙。scrollPane将组件加载到自身中,例如JLabelJavaSwing:如何防止系统复制、剪切、粘贴操作?,java,swing,keylistener,Java,Swing,Keylistener,因此,我试图通过按control+C、control+X、control+V来阻止用户使用默认的系统操作 我想在这个特殊的滚动窗格中的任何地方,抓住钥匙。scrollPane将组件加载到自身中,例如JLabel scrollPane.addKeyListener(new KeyListener(){ @Override public void keyPressed(KeyEvent evt) { if (evt.isControlDown() &&
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中添加了相同的keylistener,但它正在为此工作
更新:
那么,使用键绑定,如何让JoptionPane出现呢
scrollPane.getInputMap(JComponent.WHEN_FOCUSED)
.put(KeyStroke.getKeyStroke(KeyEvent.VK_C, KeyEvent.CTRL_DOWN_MASK),
JOptionPane.showMessageDialog(null, "disabled"));
您应该将自定义TransferHandler附加到要防止用户复制/粘贴的JComponent的所有实例上,以覆盖
getCutAction
和getCopyAction
请在此查看详细信息:最好是实现,而不是,因为 1)
KeyListener
仅当JComponent
在窗口中具有焦点时才起作用
2) 您将keylister
设置为JScrollPane
而不是JTree
3) 对于键绑定,您可以为其设置InputMap和ActionMap
- 到顶级容器(
JFrame、JDialog、JWindow
)
- 混凝土构件
4) 对于keylister
和KeyBindings
此顶级容器必须将焦点放在屏幕上
5) 然后您可以设置所需的事件#consume()
使用键绑定
如何为ActionMap添加动作?@例如,这里是Kim Jong-Woo-,或者这里我根本不知道键绑定。谢谢你+1