7

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

4

1 回答 1

8

很简单,用这个方法

JPasswordField jt=new JPasswordField(20);

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

            add(jt);

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

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

jt.getActionMap().put("a",null);
        jt.getInputMap(JComponent.WHEN_FOCUSED).put(KeyStroke.getKeyStroke("ctrl V"),"a");

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

JPasswordField jt=new JPasswordField(20){
  public void paste(){}
};

更新:我误解了评论。但是上面确实禁用了粘贴。但是,要禁用任何一种复制/剪切/粘贴,最好在没有实现的情况下覆盖要禁用的所需方法。

如果有更好的方法,我很想听听。

于 2013-07-17T17:30:36.540 回答