【发布时间】:2021-07-30 01:34:22
【问题描述】:
我正在尝试确保用户在 JTextField 中输入强密码。但是,它工作得很好,但它会在单击时计算退格、移位和 ctrl
public void keyPressed(KeyEvent e) {
// if else make sure that the user do not enter space
if (Character.isWhitespace(e.getKeyChar())) {
passwordMessage.setText("spaces are not allowed!!");
passwordtext.setEditable(false);
} else {
passwordMessage.setText("");
passwordtext.setEditable(true);
}
// if elseif else to make sure that the user enter a good length
// passwordtext.getText().length() does not count the first entered so I -1 from the length
if(passwordtext.getText().length() >= 14) { // if length is 15 or above
passwordMessage.setForeground(Color.GREEN);
passwordMessage.setText("password is Strong");
}
else if(passwordtext.getText().length() >= 7) { // if length is 8 or above
passwordMessage.setForeground(Color.ORANGE);
passwordMessage.setText("password is Good");
}
else if(passwordtext.getText().length() < 7) { // if length is less than 8
passwordMessage.setForeground(Color.RED);
passwordMessage.setText("minimum password is 8 letters or digits!!");
}
else if(passwordtext.getText().length() == 0) { // setting the label text to be empty
passwordMessage.setText("");
}
}
-例如,如果用户键入 12345678,则“密码正确”将出现在标签中,但如果他单击退格键并删除 8,则“密码正确”仍将出现在标签中,因为它删除了 8 但添加了退格的点击,所以长度仍然是 8
-当用户输入 1234567 然后点击 ctrl 时发生同样的事情,会出现“密码是好的”,因为它会计算 ctrl 的点击次数
【问题讨论】:
-
您想忽略 keyPressed 中的控制字符,但您没有这样做。此外,您将在输入 1234567 和空格后清空该字段。
标签: java swing jtextfield