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) 4)对于KeyListener和KeyBindings,此TopLevel容器必须在屏幕上具有焦点 5)然后你可以设置所需的事件#consume(); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |