我有一个字段:
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/