Wal*_*idY 0 java validation swing integer jtextfield
我在猜猜游戏.JTextField不能为空,不能长于或小于5且不能包含数字.我该怎么做最后一部分?
@Override
public void actionPerformed(ActionEvent e) {
if (text.getText().isEmpty()) {
showErrorMessage("You have to type something");
} else if (text.getText().length() != 5) {
showErrorMessage("Currently only supporting 5-letter words");
} else if (contains integer){
showErrorMessage("Words don't contain numbers!");
} else {
r.setGuess(text.getText());
}
}
Run Code Online (Sandbox Code Playgroud)
而不是数显式检查,我会建议白名单的字符是允许的.例如,允许带有重音的字母吗?大小写?标点?
一旦你完成了你的要求,我建议你把它们表达为正则表达式 - 然后检查文本是否与正则表达式匹配.
例如:
private static final Pattern VALID_WORD = Pattern.compile("^[A-Za-z]*$");
...
if (!VALID_WORD.matcher(text.getText()).matches()) {
// Show some appropriate error message
}
Run Code Online (Sandbox Code Playgroud)
请注意,我没有在那里包含长度检查,因为您已经涵盖了这些 - 并且为了提供更具体的错误消息,这可能是值得的.
您可能还需要考虑阻止文本框接受无效字符开始 - 只需拒绝按键,而不是等待提交事件.(例如,您也可以同时更改案例.)如评论中所述,JFormattedTextField可能是一个很好的匹配 - 请参阅教程以开始.
| 归档时间: |
|
| 查看次数: |
1465 次 |
| 最近记录: |