通过鼠标中键捕捉粘贴动作

时间:2016-02-16 15:59:38

标签: java swing jtextfield jcomponent

我在linux机器上工作,与windows不同,有两个剪贴板,STRG-C和STRG-V剪贴板以及通过鼠标中键剪贴板突出显示文本和粘贴。

现在我尝试捕获粘贴操作,因为我想验证剪贴板并防止文本字段被非法输入。

我成功地通过STRG-V捕获了标准粘贴:

Action action = textField.getActionMap().get("paste-from-clipboard");
textField.getActionMap().put("paste-from-clipboard", new ProxyAction(action, "paste-from-clipboard"));

和ProxyAction类的实现:

    public class ProxyAction extends TextAction
    {
        private Action action;

        public ProxyAction1(Action action, String actionName)
        {
            super(actionName);
            this.action = action;
       }

       @Override
       public void actionPerformed(ActionEvent e)
       {
           action.actionPerformed(e);
       }
   }

我的问题是,我怎样才能抓住linux特定的鼠标中键粘贴? 上面的代码没有得到它和动作"粘贴"来自jTextfield也没有解决问题。

1 个答案:

答案 0 :(得分:2)

  

我想验证剪贴板并防止文本字段被非法输入。

您可以使用DocumentFilter,而不是尝试捕获粘贴密钥。在将任何文本插入DocumentFilter之前调用Document

无论文本是在文本字段中输入还是粘贴到文本字段中,都会调用此过滤器。

有关详情,请查看How to Implement a DocumentFilter上Swing教程中的部分。