如何在JPasswordField中启用剪切,复制?

Jav*_*cal 6 java swing jpasswordfield

我注意到我无法剪切和复制JPasswordField?现在如何将选定的密码部分复制/剪切到剪贴板?有没有办法做到这一点?

Jav*_*cal 7

很简单,使用这种方法

JPasswordField jt=new JPasswordField(20);

            // Put client property
            jt.putClientProperty("JPasswordField.cutCopyAllowed",true);

            add(jt);
Run Code Online (Sandbox Code Playgroud)

默认情况下,JPasswordField不允许剪切/复制密码.您需要做的就是启用它们.

根据关于禁用粘贴的评论我没有找到属性,但我已经实现了使用它,(我不推荐这种方式)

jt.getActionMap().put("a",null);
        jt.getInputMap(JComponent.WHEN_FOCUSED).put(KeyStroke.getKeyStroke("ctrl V"),"a");
Run Code Online (Sandbox Code Playgroud)

另一种方法是,paste()在声明时覆盖(我推荐这种方式)

JPasswordField jt=new JPasswordField(20){
  public void paste(){}
};
Run Code Online (Sandbox Code Playgroud)

更新:我误解了评论.但上面确实禁用了粘贴.但是,要禁用复制/剪切/粘贴中的任何一个,最好是要禁用所需的禁用方法而不执行任何实现.

如果有更好的方式,我很乐意听到.

  • @nachokk ["不仅可以提问并回答你自己的问题,而且非常明显地鼓励他们"](http://blog.stackoverflow.com/2011/07/its-ok-to-ask-and-answer-你自己的问题/) (3认同)