gpt4 book ai didi

java - 在 Java (Swing) 中可以注册多个按键监听器事件吗?

转载 作者:行者123 更新时间:2023-12-01 23:12:17 24 4
gpt4 key购买 nike

我正在尝试验证某些文本字段输入数据是否在某个值范围内。

我的简单 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 的值发生之前对其进行过滤

看看Implementing a DocumentFilter详细信息和MDP's Weblog例如

关于java - 在 Java (Swing) 中可以注册多个按键监听器事件吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21719372/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com