JTextField +对话框上的输入验证

时间:2014-10-20 23:26:50

标签: java swing validation jtextfield

所以我的目标是验证JTextField的内容,以便确保我的Athlete对象的年龄在6-99之间。这是我到目前为止所拥有的。

JTextField ageTextField = new JTextField();

saveButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                Integer age = Integer.parseInt(ageTextField.getText());

                Athlete athlete = new Athlete(firstNameTextField.getText(),
                        lastNameTextField.getText(), gender, age, schoolNameBox
                                .getSelectedItem().toString(), teacherBox
                                .getSelectedItem().toString(), eventBox1
                                .getSelectedItem().toString(), eventBox2
                                .getSelectedItem().toString(), null);

            }
        });

所以基本上我需要一种方法来向用户显示错误对话框,如果他们点击了“保存”并且JTextField的值不在6-99之间。

我已经看到了很多不同的方法来验证JTextFields上的输入,但对我的具体情况没有任何影响。我正在寻找一个干净,简洁的方法来做到这一点。感谢。

2 个答案:

答案 0 :(得分:2)

在你的情况下,就像......一样简单。

Integer age = Integer.parseInt(ageTextField.getText());
if (age >=6 && age <= 99) {
    // All is okay...
} else {
    JOptionPane.showMessageDialog(this, "The age is out side of the valid range of 6-99", "Error", JOptionPane.ERROR_MESSAGE);
}

工作得很好......

您可以使用InputVerifier在失去焦点时验证字段,有关详细信息,请参阅Validating Input

您可以使用JSpinner来执行自己的验证并允许您指定有效范围(6-99),有关详细信息,请参阅How to Use Spinners

private JSpinner ageField;
//...
ageField= new JSpinner(new javax.swing.SpinnerNumberModel(6, 6, 99, 1));
//...
Integer age = (Integer)ageField.getValue();

答案 1 :(得分:0)

非常简单。使用简单的if语句:

if(age < 6 || age > 99) {

    JOptionPane.showMessageDialog(this,
        "Age must be 6-99",
        "Error",
        JOptionPane.ERROR_MESSAGE);

    return;
}