哪种方法可以验证JTextField中的数据?

时间:2010-09-06 02:27:51

标签: java swing validation

我试过了,但JTextField会一直显示输入的最后一个键。我做错了什么?...

private void codigoKeyTyped(java.awt.event.KeyEvent evt) {
    //codigo is the JTextField
    String s = String.valueOf(evt.getKeyChar());
    try{
        Integer.parseInt(s);
    }catch(Exception e){
        codigo.setText("");    
    }
}

最后,我希望它删除最后一个字符,并在文本字段中保留整数值。但我想解决这个问题后会很简单。谢谢!

// ANSWER!

感谢大家回答我的问题。最后我做了这个

private void codigoKeyTyped(java.awt.event.KeyEvent evt) {

    char c = evt.getKeyChar();

    if (! Character.isDigit(c)) {
        evt.consume();            
    }
}

3 个答案:

答案 0 :(得分:2)

我建议使用DocumentListener intead。有关示例代码,请参阅this example

答案 1 :(得分:1)

使用键侦听器(甚至文档侦听器)不适合此任务。可以说,监听器模型不适合输入事件。您是否希望您的侦听器代码在插入键值的侦听器代码之前或之后运行?你将如何处理复制和粘贴键击,以及鼠标驱动的拖放?

处理此问题的方法是使用DocumentFilter。在my trivial Swing example blog entry中证明了这一点的用法。

答案 2 :(得分:-2)

一旦用户准备好做某事,您就必须阅读JTextField ...例如,单击“确定”按钮。创建这样一个按钮并将以下代码放在其ActionPerformed方法中:

String idtxt = codigo.getText();

int id = Integer.parseInt(idtxt);

目前,您的JTextField读取由KeyEvent触发,evt.getKeyChar()返回按下的键。这个事件可能对于发出“咔嗒”的声音很好,但不适用于整体>一位数!