Как использовать BigDecimal в графическом интерфейсе Swing? - PullRequest
1 голос
/ 22 марта 2010

Я использую BigDecimal для представления цен на продукты в приложении Java SE.

Какой компонент (ы) колебания я должен использовать, чтобы позволить пользователю вводить числа только с двумя десятичными разрядами и привязывать его к переменной BigDecimal / свойству Object. (Проверяя, что пользователь вводит)?

Я играл с JTextField, JFormattedTextField, NumberFormatter, MaskFormatter, но я не могу разобраться.

Существует ли комбинация и конфигурация этих компонентов для этого? или я должен расширить MaskFormatter, JTextField, ...?

Ответы [ 2 ]

2 голосов
/ 08 марта 2011

Я ненавижу выводить эти действительно старые темы, но я понимаю, что StackOverflow плачет каждый день, а ответ остается нерешенным.

, поэтому вы можете проверить код здесь: http://www.java2s.com/Code/Java/Swing-JFC/ABigDecimalobjectcustomformatter.htm

в основном настроен на JFormattedTextField для использования DecimalFormat

1 голос
/ 22 марта 2010

Я не совсем уверен, что вы пытаетесь сделать, но есть конструктор BigDecimal, который принимает Strings в качестве параметра (аналогично, например, Double.parseDouble(String s)):

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

См. JavaDoc для BigDecimal для получения дополнительной информации.

Редактировать: Если проверять / проверять ввод пользователя в текстовое поле, либо проверьте его вручную, либо используйте Validator (см. Результаты Google для "JTextField Validator" )

...