gpt4 book ai didi

Java : JFormattedTextField saving numbers

转载 作者:行者123 更新时间:2023-12-02 09:18:18 26 4
gpt4 key购买 nike

在我的应用程序中,我想输入特定限制的数字(金额),因此使用了 JFormattedTextField。限制如“12345678.99”,即“.”之前的 8 位数字“.”之后是 2等等。这是我的实现代码,但它没有达到预期的结果。

    startBalTxt.setFormatterFactory(new javax.swing.text.DefaultFormatterFactory(new javax.swing.text.NumberFormatter(new java.text.DecimalFormat("########.##"))));
startBalTxt.setText(resourceMap.getString("startBalTxt.text")); // NOI18N
startBalTxt.setFont(Utility.getTextFont());
startBalTxt.setName("startBalTxt"); // NOI18N
<小时/>
  INPUT                RESULT  
"12345678905.99" => "12345678906" ==> Should give "12345678.99" or "12345679.99"
"12345678.555" => "12345678.56" ==> CORRECT
"1234567890123456" => "1234567890123456" ==> Absolutely wrong in all aspects

我哪里出错了?以及如何使其按我的预期工作。

根据 StanislavL 建议的更新:

    numberFormat = (DecimalFormat) DecimalFormat.getNumberInstance();
numberFormat.setMaximumFractionDigits(2);
numberFormat.setMaximumIntegerDigits(8);
numberFormat.setMinimumFractionDigits(0);
numberFormat.setMinimumIntegerDigits(2);

nfr = new NumberFormatter(numberFormat);

initComponents();
myParent = parent;
this.startBalTxt.setFormatterFactory(new javax.swing.text.DefaultFormatterFactory(nfr));

Results -> 4562147896.45 == > 62,147,896.45

它遵守真实的限制,但它消除了之前的数字而不是后来的数字。我的意思是在 4562147896.45 而不是“45”中,“96”不应该被消除。

最佳答案

通行证DecimalFormatJFormattedTextField 构造函数。它有以下方法

setMaximumIntegerDigits
setMinimumIntegerDigits
setMaximumFractionDigits
setMinimumFractionDigits

关于Java : JFormattedTextField saving numbers,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8572948/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com