所以我的目标是验证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上的输入,但对我的具体情况没有任何影响。我正在寻找一个干净,简洁的方法来做到这一点。感谢。
答案 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;
}