我正在尝试将某些文本字段输入数据验证在一系列值范围内。
我的简单GUI中有两个JTextField,并注册了以下内容:
ID1_Txt_Input.addKeyListener(new KeyAdapter() {
public void keyReleased(KeyEvent e) {
JTextField textField = (JTextField) e.getSource();
String text = validateInput(textField.getText(),1,254);
textField.setText(text);
}
});
ID2_Txt_Input.addKeyListener(new KeyAdapter() {
public void keyReleased(KeyEvent e) {
JTextField textField = (JTextField) e.getSource();
String text = validateInput(textField.getText(),0,65535);
textField.setText(text);
}
});
然后我有一个简单的验证方法如下:
public String validateInput( String s, int val_min, int val_max )
{
String output = "";
int val = 0;
try {
val = Integer.parseInt(s);
}
catch(NumberFormatException ne) {
output = "";
}
if( val < val_min )
{
output = "";
}
else if( val > val_max )
{
val /= 10;
output = (String.valueOf(val));
}
else{
output = s;
}
return output;
};
我看到的内容:第一个文本字段正确验证,只允许输入1-254之间的数字,并在输入非数字时自动清除。第二个文本字段未正确验证。
我对Java很新,所以如果我在解决这个问题时会出现明显的错误,我会很感激你的建议。
谢谢,
答案 0 :(得分:3)
此类型的实时验证最好通过使用DocumentFilter
来完成,这样可以在Document
出现之前过滤添加/删除的值
请查看Implementing a DocumentFilter
了解详情,MDP's Weblog查看示例