如何从 JformattedTextfield 检索货币格式值

Posted

技术标签:

【中文标题】如何从 JformattedTextfield 检索货币格式值【英文标题】:how to retrieve currency format values from JformattedTextfield 【发布时间】:2013-03-20 12:18:35 【问题描述】:

我在尝试检索计算值并将其传递给 JformattedTextfield 时遇到了这个问题,我知道由于 jformattedTextfield (,),Float 不能接受 1,500.00。有没有办法绕过这个问题?

 private void SellButtonActionPerformed(java.awt.event.ActionEvent evt)                                            
      float foreign , sellingRate, localAmount;
            try
            DefaultTableModel dtm=(DefaultTableModel)p1.getModel();
            int i = p1.getSelectedRow();
            String s1=dtm.getValueAt(i,2).toString();
            txt_rate.setText(s1);
      catch(Exception e)
          JOptionPane.showMessageDialog(null, "Select Currency First");
      
            foreign =  Float.parseFloat(txt_select.getText());
            sellingRate =  Float.parseFloat(txt_rate.getText());
            localAmount = foreign / sellingRate;
            txt_amount.setValue(localAmount);
          

错误信息

Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatException: For input string: "1,500.00"
        at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1241)
        at java.lang.Float.parseFloat(Float.java:452)

我可以计算出低于 1,000

的数字

预期结果

【问题讨论】:

JTable 中汇率的疯狂外汇波动 int i = p1.getSelectedRow();应该在所有情况下都包含在 if (i > -1) 中,最好使用 SelectionMode 到 SINGLE 使用带有数字实例的 JFormattedTextField 为我工作 【参考方案1】:

您真的要让用户输入带有千位分隔符的货币吗?至少对于我迄今为止看到和开发的所有应用程序来说,这是非常少见的。

通常您只将其用于显示目的,而不是用于输入。因此,用户将输入1000,您将通过将值格式化为NumberFormat.format(),将其显示为1,000.00

如果您真的想要这样的输入,则应将其视为String,然后由NumberFormat.parse() 解析,如here 所示。

【讨论】:

以上是关于如何从 JformattedTextfield 检索货币格式值的主要内容,如果未能解决你的问题,请参考以下文章

Double的JFormattedTextField仍然需要字符[重复]

获得焦点时如何选择 JFormattedTextField 中的所有文本?

JFormattedTextField 格式化百分比数字?

具有任意小数位数的 JFormattedTextfield

如何让 JFormattedTextField 使用 1.55 美元,但将值存储为整数 155?

JFormattedTextField 问题