java—确定jtextfield是否包含整数

bfnvny8b  于 2021-07-09  发布在  Java
关注(0)|答案(3)|浏览(407)

我在做猜字游戏。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());
    }
}
uemypmqf

uemypmqf1#

if (!text.getText().matches("[a-zA-Z]*")) {
    // something wrong
}
qyuhtwio

qyuhtwio2#

创建一个方法来检查 JTextField 有这样一个数字:

private boolean isContainInt(JTextField field) {

    Pattern pt = Pattern.compile("\\d+");
    Matcher mt = pt.matcher(field.getText());
    return mt.find();
}
bis0qfac

bis0qfac3#

与其显式地检查数字,我建议将允许的字符列入白名单。例如,带重音的字母可以吗?大写和小写?标点符号?
一旦您确定了您的需求,我建议您将它们表示为正则表达式—然后检查文本是否与正则表达式匹配。
例如:

private static final Pattern VALID_WORD = Pattern.compile("^[A-Za-z]*$");

...

if (!VALID_WORD.matcher(text.getText()).matches()) {
   // Show some appropriate error message
}

请注意,我在这里没有包含长度检查,因为您已经介绍了这些内容—为了给出更具体的错误消息,这样做可能是值得的。
您可能还需要考虑阻止文本框接受以无效字符开头的字符—只需拒绝按键,而不是等待提交事件(例如,你也可以在同一时间一致地更改案例。)如评论中所述, JFormattedTextField 可能是一个很好的匹配-请参阅教程开始。

相关问题