加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

Java Swing:如何防止系统复制,剪切,粘贴动作?

发布时间:2020-12-15 04:56:16 所属栏目:Java 来源:网络整理
导读:所以我试图通过按下控制C,控制X,控制V来阻止用户能够使用默认的系统操作. 我希望在这个特定的scrollPane中的任何地方都能抓住密钥. scrollPane将Component加载到自身中,例如JLabel. scrollPane.addKeyListener(new KeyListener(){ @Override public void key
所以我试图通过按下控制C,控制X,控制V来阻止用户能够使用默认的系统操作.

我希望在这个特定的scrollPane中的任何地方都能抓住密钥. scrollPane将Component加载到自身中,例如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
    }
});

但是,什么都没有打印出来.

我将相同的keylistener添加到Jtree中,但它正在为此工作.

更新:

所以使用keybinds,我如何让JoptionPane出现?

scrollPane.getInputMap(JComponent.WHEN_FOCUSED)
                        .put(KeyStroke.getKeyStroke(KeyEvent.VK_C,KeyEvent.CTRL_DOWN_MASK),JOptionPane.showMessageDialog(null,"disabled"));

解决方法

更好的是实现 KeyBindings而不是 KeyListener,因为

1)KeyListener仅在JComponent在窗口中具有焦点时起作用,

2)您将KeyListener设置为JScrollPane而不是JTree

3)对于KeyBindings,您可以设置InputMap和ActionMap

>到TopLevel容器(JFrame,JDialog,JWindow)
>具体的JComponent(s)

4)对于KeyListener和KeyBindings,此TopLevel容器必须在屏幕上具有焦点

5)然后你可以设置所需的事件#consume();

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读