繁体   English   中英

可以在Java(Swing)中注册一个以上的侦听事件吗?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM