【问题标题】:How to use BigDecimal in swing GUIs?如何在 Swing GUI 中使用 BigDecimal?
【发布时间】:2010-03-22 20:25:16
【问题描述】:

我在 Java SE 应用程序中使用 BigDecimal 来表示产品价格。

为了允许用户输入只有两位小数的数字并将其绑定到 BigDecimal 变量/对象的属性,我应该使用什么摆动组件。 (在用户输入时检查)?

我一直在玩 JTextField、JFormattedTextField、NumberFormatter、MaskFormatter 但我无法解决。

这些组件是否有任何组合和配置可以做到这一点?还是我应该扩展 MaskFormatter、JTextField、...?

【问题讨论】:

    标签: java swing bigdecimal


    【解决方案1】:

    我讨厌在东西上删除这些非常旧的线程,但我的理解是 StackOverflow 每天都在里面哭泣,答案仍然没有得到解决。

    所以你可以在这里查看代码:http://www.java2s.com/Code/Java/Swing-JFC/ABigDecimalobjectcustomformatter.htm

    基本上设置为 JFormattedTextField 以使用 DecimalFormat

    【讨论】:

      【解决方案2】:

      我不太确定您要做什么,但是有一个 BigDecimal 构造函数,它以字符串作为参数(类似于 Double.parseDouble(String s)):

      try
      {
          BigDecimal decimal = new BigDecimal(yourJTextField.getText());
      }
      catch (NumberFormatException nfe)
      { /* error handling */}
      

      有关更多信息,请参阅BigDecimal 的 JavaDoc。

      编辑:如果检查/验证用户在文本字段中的输入,请手动检查或使用验证器(请参阅Google results for "JTextField Validator"

      【讨论】:

      • 问题是我想要一个只允许数字的组件,并且只允许 2 个小数位:如果用户键入一个字母,它不会显示,如果用户键入第三个小数位,它没有显示。最重要的是,我想将该组件绑定到 BigDecimal 变量。
      • InputVerifier 在焦点改变时起作用。我想在用户输入组件时控制输入。
      • 当然,您可以简单地为 TextFields 使用 CaretPositionChanged 事件,检查用户输入的内容,如果有效,则不要执行任何操作,如果无效则删除最后输入的字符。跨度>
      猜你喜欢
      • 1970-01-01
      • 2017-08-13
      • 1970-01-01
      • 2018-03-22
      • 1970-01-01
      • 2011-09-15
      • 1970-01-01
      • 2017-03-13
      • 2014-06-07
      相关资源
      最近更新 更多