我在做猜字游戏。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());
}
}
3条答案
按热度按时间uemypmqf1#
qyuhtwio2#
创建一个方法来检查
JTextField
有这样一个数字:bis0qfac3#
与其显式地检查数字,我建议将允许的字符列入白名单。例如,带重音的字母可以吗?大写和小写?标点符号?
一旦您确定了您的需求,我建议您将它们表示为正则表达式—然后检查文本是否与正则表达式匹配。
例如:
请注意,我在这里没有包含长度检查,因为您已经介绍了这些内容—为了给出更具体的错误消息,这样做可能是值得的。
您可能还需要考虑阻止文本框接受以无效字符开头的字符—只需拒绝按键,而不是等待提交事件(例如,你也可以在同一时间一致地更改案例。)如评论中所述,
JFormattedTextField
可能是一个很好的匹配-请参阅教程开始。