如何随时告知正在填写密码字段的用户其密码的强度是多少 就像电子邮件程序一样,当您填写密码字段时,它会随时通知您 我想要 swing 中的这个功能
我在互联网上找不到解决此问题的方法
我创建了一个简单的 GUI 来说明该过程。
密码检查器检查密码的长度。 您可以更改此设置以测试您认为良好或优秀的密码。
这是完整的可运行代码。
import java.awt.BorderLayout;
import javax.swing.BorderFactory;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.SwingUtilities;
import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;
import javax.swing.text.Document;
public class JPasswordFieldExample implements Runnable {
public static void main(String[] args) {
SwingUtilities.invokeLater(new JPasswordFieldExample());
}
private JLabel strengthLabel;
@Override
public void run() {
JFrame frame = new JFrame("JPasswordField Example");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(createPasswordPanel(), BorderLayout.CENTER);
frame.pack();
frame.setLocationByPlatform(true);
frame.setVisible(true);
}
private JPanel createPasswordPanel() {
JPanel panel = new JPanel(new BorderLayout());
panel.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
JPasswordField passwordField = new JPasswordField(30);
Document document = passwordField.getDocument();
document.addDocumentListener(new DocumentListener() {
@Override
public void insertUpdate(DocumentEvent event) {
checkPassword(event);
}
@Override
public void removeUpdate(DocumentEvent event) {
checkPassword(event);
}
@Override
public void changedUpdate(DocumentEvent event) {
checkPassword(event);
}
private void checkPassword(DocumentEvent event) {
Document document = event.getDocument();
if (document.getLength() < 8) {
strengthLabel.setText("Poor");
} else if (document.getLength() < 12) {
strengthLabel.setText("Good");
} else {
strengthLabel.setText("Excellent");
}
}
});
panel.add(passwordField, BorderLayout.CENTER);
strengthLabel = new JLabel(" ");
panel.add(strengthLabel, BorderLayout.SOUTH);
return panel;
}
}