Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/376.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaSwing:如何防止系统复制、剪切、粘贴操作?_Java_Swing_Keylistener - Fatal编程技术网

JavaSwing:如何防止系统复制、剪切、粘贴操作?

JavaSwing:如何防止系统复制、剪切、粘贴操作?,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() &&

因此,我试图通过按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中添加了相同的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