确定JTextField是否包含整数

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)

Jon*_*eet 8

而不是数显式检查,我会建议白名单的字符允许的.例如,允许带有重音的字母吗?大小写?标点?

一旦你完成了你的要求,我建议你把它们表达为正则表达式 - 然后检查文本是否与正则表达式匹配.

例如:

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可能是一个很好的匹配 - 请参阅教程以开始.