我有一个需要在运行时屏蔽进入jText区域的值的要求。我能够实现这一点,但问题是带有退格键的情况。当我按顺序(退一格)按退格键时,它会起作用,而如果我一直按该键,则它将事件计数为一个并仅删除一个字符(通过将键事件视为释放的一个键)。
这里是我的代码段:
public void showPrompt() throws InterruptedException {
sem.acquire();
this.toFront();
this.setAlwaysOnTop(true);
this.setVisible(true);
if(encryptKeystroke == true) {
jTextArea.addKeyListener(new KeyListener() {
public void keyTyped(KeyEvent e) {
}
public void keyPressed(KeyEvent e) {
}
public void keyReleased(KeyEvent e) {
if (e.getExtendedKeyCode() == KeyEvent.VK_BACK_SPACE) {
text = text.substring(0, text.length() - 1);
}
else {
text += String.valueOf(e.getKeyChar());
}
jTextArea.setText(text.replaceAll(".", "*"));
}
});
}
}
如果我一直按退格键有什么办法,那么无论考虑一个按键事件,它都应删除所有字符?
正如您在评论中所说,要求与密码不完全相同,因此您将不会使用JPasswordField,我想为问题提供解决方案。