【问题标题】:JTextField's value disorientation on clearingJTextField 在清除时的价值迷失方向
【发布时间】:2012-09-27 18:57:37
【问题描述】:

我正在尝试使用 Eclipse 中的 WindowBuilder 插件创建 Java Windows 应用程序。在输入所需值时,我有一个工作正常的 JTextField。但是,当我清除该字段上的所有内容并尝试重新输入其他值时,这些值会迷失方向,即这些值根本没有出现,或者似乎出现在下一行。

我正在使用 DocumentListener,所以是的,这可能会导致空字符串异常。但是,我不确定为什么 JTextField 的内容在重新输入时不合适。

PFB 我的一段代码:

void computeTotal(final JTextField jtf){
    jtf.getDocument().addDocumentListener(new DocumentListener(){
        public void changedUpdate(DocumentEvent e) {
            //warn();
            getTotal();
        }
        public void removeUpdate(DocumentEvent e) {
            //warn();
            getTotal();
        }
        public void insertUpdate(DocumentEvent e) {
            //warn();
            getTotal();
        }
        public void getTotal(){
            bt = Float.parseFloat(billTotal.getText());
            bd = Float.parseFloat(billDeduction.getText()) ;
            ta = Float.parseFloat(taxAmt.getText());
            tt = bt - bd+ ta;
             totalTotal.setText(tt+"");
        }

    });
    }

这里有什么问题?

【问题讨论】:

  • 您可以添加SSCCE 来证明问题。
  • 请注意,这段代码有一些奇怪的地方:1)方法名称与实现不匹配 2)您将DocumentListener 附加到文本字段,当触发该侦听器时,您什么也不做与实际事件或该文本字段的内容

标签: java swing jtextfield string documentlistener


【解决方案1】:

这里有什么问题?

  • 使用 Number Formatter 格式化的 JFormattedTextField,那么 DocumentListener 是正确的监听器

  • 不需要解析,输出不错,千位分隔符没有问题,不允许输入非数字字符

  • 将 DocumentFilter 与 Patern 一起使用,您可以在其中删除非数字字符,然后您可以使用包含数字、小数分隔符和负数的非常保存的内容进行解析

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-06-25
    • 2022-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多