【问题标题】:Formatting currency in Java在 Java 中格式化货币
【发布时间】:2012-08-28 17:48:07
【问题描述】:

在我当前的项目中,我将货币值存储为int,它代表美分的数量。但是,当用户在文本字段中输入此值时,他们很可能希望将其输入为十进制值。另外,如果用户不手动输入,我想在前面加上一个美元符号。如何利用JFormattedTextField 为我完成大部分工作?或者是否有其他使用预先存在的 Swing 组件的解决方案,这样我就不必通过手动编码来重新发明轮子?

【问题讨论】:

    标签: java swing user-interface formatting


    【解决方案1】:

    NumberFormat 也适用于格式化货币(请参阅NumberFormat#getCurrencyInstance)。既然你需要一个Format 来代替JFormattedTextField,我就从那里开始。

    您可以将NumberFormat 配置为允许使用十进制值,并稍后在您的代码中将其转换为int 而不会出现问题

    【讨论】:

    • 如果我使用这个方案,JFormattedTextField.getValue()返回的Object是什么样的?
    • 如果你使用NumberFormat,它将返回Number
    • 除了使用instanceof 运算符之外,还有什么方法可以知道具体的类吗?在这种情况下,如果能够转换为 Double 并使用自动拆箱,那就太好了。我还使用其他 JFormattedTextFields 进行整数输入,因此将它们转换为 Integer 也很棒!
    • 不需要实例。既然你自己设置了Format,你就知道返回类型是什么(Formatparse方法的返回类型)。所以如果你想要一个Double,你可以使用一个Format,它返回一个double。但不确定Number#doubleValue() 的问题是什么
    • 问题是 PEBKAC 错误:没有仔细查看 API =p
    【解决方案2】:

    我强烈建议考虑 Joda Money 库 -> http://joda-money.sourceforge.net/userguide.html

    【讨论】:

      猜你喜欢
      • 2016-04-25
      • 2012-05-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-08
      • 2012-01-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多