检查jTextField输入是int还是字符串

时间:2013-03-15 09:13:02

标签: java arrays try-catch jtextfield

我的代码:

name = jTextFieldName.getText();
admin = Integer.parseInt(jTextFieldAdmin.getText());
anal = Integer.parseInt(jTextFieldAnalytical.getText());
creat = Integer.parseInt(jTextFieldCreative.getText());
finish = Integer.parseInt(jTextFieldFinisher.getText());

persons.addPerson(name, admin, anal, creat, finish);

persons.savePersons();

我想确保名称是一个字符串,而admin,anal,creat和finish是0到30之间的整数。我在想我应该使用try-catch,但我不确切知道如何在这种情况下使用它。任何帮助赞赏!

4 个答案:

答案 0 :(得分:2)

尝试捕获并不是一个糟糕的方法来处理这个问题:

try {
    name = jTextFieldName.getText();
    admin = Integer.parseInt(jTextFieldAdmin.getText());
    anal = Integer.parseInt(jTextFieldAnalytical.getText());
    creat = Integer.parseInt(jTextFieldCreative.getText());
    finish = Integer.parseInt(jTextFieldFinisher.getText());

    persons.addPerson(name, admin, anal, creat, finish);

    persons.savePersons();
} catch (NumberFormatException e) {
    // One of the integer fields failed to parse. Do something to alert the user.
}

然后您还可以在try部分中放置一些边界检查。 e.g。

if (admin < 0 || admin > 30) {
    // Problem. Alert the user.
}

答案 1 :(得分:2)

为什么不使用JSpinner

答案 2 :(得分:1)

您需要的是if-else哪些条件符合条件或要求用户在需要时再次输入。

前 -

if(admin<0 || admin>30){
  // ask user to input again.
}

答案 3 :(得分:1)

InputVerifier使用JTextField,如下所示

public class MyInputVerifier extends InputVerifier {
    @Override
    public boolean verify(JComponent input) {
        String text = ((JTextField) input).getText();
        // Validate input here, like check int by try to parse it using Integer.parseInt(text), and return true or false
    }
}

// Set input verifier to the text field
jTextField.setInputVerifier(new MyInputVerifier());