如何从JformattedTextfield中检索货币格式值

时间:2013-03-20 12:18:35

标签: java swing textfield number-formatting jformattedtextfield

我有这个问题,我试图检索并将计算值传递给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)

under thousand unite

我可以在{ 1,000 }

下设置数字

预期结果 Expected result

1 个答案:

答案 0 :(得分:1)

您真的想让用户使用千位分隔符输入货币吗?至少到目前为止我见过和开发的所有应用程序,这都是非常罕见的。

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

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