java - 如何将 BigDecimal 与 JFormattedTextField 一起使用

标签 java swing netbeans bigdecimal jformattedtextfield

我有一个字段:

jFormattedTextFieldGrossWeight = new javax.swing.JFormattedTextField();
jFormattedTextFieldGrossWeight.setFormatterFactory(new javax.swing.text.DefaultFormatterFactory(new javax.swing.text.NumberFormatter(new java.text.DecimalFormat("#,##0.00"))));

我使用它的 setValue() 方法为其分配一个 BigDecimal 值,并允许用户使用该文本字段修改该值。

然后在lostFocus方法中,就行了:

jFormattedTextField.commitEdit();
BigDecimal gross = (BigDecimal)this.jFormattedTextFieldGrossWeight.getValue();

我得到以下异常:

java.lang.ClassCastException: java.lang.Long cannot be cast to java.math.BigDecimal

有什么问题吗?如何修改我的代码以消除此错误?

最佳答案

你可以试试这个:

JFormattedTextField ftf = new JFormattedTextField();
ftf.setFormatterFactory(new DefaultFormatterFactory(
                        new NumberFormatter(new DecimalFormat("#,##0.00"))));


// Input = 1245678.57
// After the format it will be:
// 1,245,678.57
// So, we need to get rid of the comma's:
String number = ftf.getText().replace(",","");
BigDecimal bd = new BigDecimal(number);

关于java - 如何将 BigDecimal 与 JFormattedTextField 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6089508/

相关文章:

java - AspectJ java 13 支持吗?

java - 使单例具有所有静态字段

java - 当相关文件更改时动态刷新 JTextPane

java - 使用 JFrame 的浏览器

Java 缺少按钮文本

java - 如何在最终 list 中设置权限

java - 如何获取SQLite 'VACUUM'进度

java - 获取执行 Java 代码的位置

java - 不一致的 Java Swing JFrame 大小

java - XML 在 Android 中不显示