[英]Java Swing - ActionListener much slower than KeyListener
[英]Can more than one keylistener event be registered in Java (Swing)?
我正在尝试验证某些文本字段输入数据在值范围内。
我的简单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还是很陌生,因此如果在解决此问题方面犯了一个明显的错误,我将不胜感激。
谢谢,
哇,作为用户,这真是令人讨厌。 更不用说,您实际上可能触发突变异常,或者看到您的更新被完全忽略了,更不用说如果有人将文本粘贴到字段中会发生什么...
最好通过使用DocumentFilter
来进行这种类型的实时验证,这将允许在添加/删除到Document
的值出现之前对其进行过滤
看一下实现DocumentFilter
的详细信息,以及MDP的Weblog的示例
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.