Как использовать BigDecimal с JFormattedTextField - PullRequest
1 голос
/ 22 мая 2011

У меня есть поле как:

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

Я присваиваю ему значение BigDecimal, используя метод setValue (), и разрешаю пользователю изменять это значение, используя это текстовое поле.

Затем в методе lostFocus в строке:

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

Я получаю следующее исключение:

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

Что-то не так? Как я могу изменить свой код, чтобы избавиться от этой ошибки?

Ответы [ 2 ]

2 голосов
/ 22 мая 2011

Вы можете попробовать это:

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);
2 голосов
/ 22 мая 2011

Я реализовал числовые поля на основе JFormattedTextField.

JRealNumberField и JLocalizedRealNumberField являются текстовыми полями для BigDecimal.

Они также поддерживают минимальное и максимальное значение.

Может быть, вы найдете их полезными (библиотека с открытым исходным кодом):

http://softsmithy.sourceforge.net/lib/docs/api/org/softsmithy/lib/swing/JRealNumberField.html

http://softsmithy.sourceforge.net/lib/docs/api/org/softsmithy/lib/swing/JDoubleField.html

http://softsmithy.sourceforge.net/lib/docs/api/org/softsmithy/lib/swing/JFloatField.html

http://softsmithy.sourceforge.net/lib/docs/api/org/softsmithy/lib/swing/JLocalizedRealNumberField.html

http://softsmithy.sourceforge.net/lib/docs/api/org/softsmithy/lib/swing/JLocalizedDoubleField.html

http://softsmithy.sourceforge.net/lib/docs/api/org/softsmithy/lib/swing/JLocalizedFloatField.html

http://softsmithy.sourceforge.net/lib/docs/api/org/softsmithy/lib/swing/JWholeNumberField.html

http://softsmithy.sourceforge.net/lib/docs/api/org/softsmithy/lib/swing/JByteField.html

http://softsmithy.sourceforge.net/lib/docs/api/org/softsmithy/lib/swing/JIntegerField.html

http://softsmithy.sourceforge.net/lib/docs/api/org/softsmithy/lib/swing/JLongField.html

http://softsmithy.sourceforge.net/lib/docs/api/org/softsmithy/lib/swing/JShortField.html

Учебник

http://softsmithy.sourceforge.net/lib/docs/tutorial/swing/number/index.html

Домашняя страница:

http://www.softsmithy.org

Скачать:

http://sourceforge.net/projects/softsmithy/files/softsmithy/

Maven:

<dependency>  
    <groupid>org.softsmithy.lib</groupid>  
    <artifactid>lib-core</artifactid>  
    <version>0.1</version>  
</dependency>  

-Puce

...