Java文本框中密码提示类if语句输出不随输入变化问题求助
问题解决:密码强度提示无法动态更新
你的问题出在只在密码不满足要求时设置提示,却没在满足要求时清空旧提示。比如用户一开始没输入大写字母,Text2a显示了添加大写的提示,后来用户补上大写后,代码里没有处理这种情况,导致旧提示一直保留着。
解决方法很简单,在每次处理输入判断前,先把三个提示框的文本清空,这样每次都会根据当前输入重新生成提示:
修改后的代码如下:
if(e.getSource()==click){ pass = Input.getText(); // 先清空所有提示文本,避免旧提示残留 Text2a.setText(""); Text2b.setText(""); Text2c.setText(""); Pattern upperCase = Pattern.compile("[A-Z]"); Pattern numbers = Pattern.compile("[0-9]"); Pattern special = Pattern.compile("[^A-Za-z0-9]"); Matcher upper = upperCase.matcher(pass); Matcher number = numbers.matcher(pass); Matcher spec = special.matcher(pass); boolean a = upper.find(); boolean b = number.find(); boolean c = spec.find(); if(pass.length() > 15 || pass.length() < 5){ Text1.setText("The password must be between 5 and 15 characters"); } else{ if (a && b && c) { Text1.setText("The password looks strong"); } else { if ((a && b) || (b && c) || (c && a)) { Text1.setText("The password strength is average"); if(!a){ Text2a.setText("*Try adding some uppercase letters"); } if(!b){ Text2b.setText("*Try adding some numbers"); } if(!c){ Text2c.setText("*Try adding some special characters"); } } else { Text1.setText("The password seems pretty weak"); if(!a){ Text2a.setText("*Try adding some uppercase letters"); } if(!b){ Text2b.setText("*Try adding some numbers"); } if(!c){ Text2c.setText("*Try adding some special characters"); } } } } }
你也可以选择在满足条件时单独清空对应提示框(比如当a为true时,设置Text2a.setText("")),但统一清空的方式更简洁,不容易遗漏分支。
这样修改后,每次输入变更时,提示文本都会根据当前密码的情况动态更新,旧提示不会再残留。
内容的提问来源于stack exchange,提问作者ImShadx
相关产品推荐
相关产品推荐

