Как изменить формат JFormattedTextField во время выполнения? - PullRequest
6 голосов
/ 05 марта 2011

Я знаю, что вы можете передать формат в конструктор JFormattedTextField, но как бы вы изменили форматер во время выполнения?Например, у меня есть поле, которое должно быть преобразовано в целочисленные значения, но при изменении значения определенного поля со списком теперь поле должно принимать значения с плавающей точкой.

Ответы [ 2 ]

8 голосов
/ 05 марта 2011

Вы можете вызвать setFormatterFactory (JFormattedTextField.AbstractFormatterFactory) для вашего объекта.

Вы можете использовать его следующим образом:

// Define the number factory.
NumberFormat nf = NumberFormat.getIntegerInstance(); // Specify specific format here.
NumberFormatter nff = new NumberFormatter(nf);
DefaultFormatterFactory factory = new DefaultFormatterFactory(nff);

// Define the decimal factory.
DecimalFormat df = new DecimalFormat(); // And here..
NumberFormatter dnff = new NumberFormatter(df);
DefaultFormatterFactory factory2 = new DefaultFormatterFactory(dnff); 

// Then you set which factory to use.
JFormattedTextField field = new JFormattedTextField();
field.setFormatterFactory(factory);
//field.setFormatterFactory(factory2);        

Так что просто установите фабрикукогда происходит ваше событие.

Обратите внимание, что конструктор DefaultFormatterFactory может принимать несколько форматеров;по умолчанию, формат отображения, когда у него нет фокуса, формат редактирования, когда у него есть фокус, и нулевой формат, когда у поля есть нулевое значение.

1 голос
/ 05 марта 2011

В этом примере используется InputVerifier для добавления вариантов в формат по умолчанию.Он предназначен для Date, но вы можете адаптировать подход к Number.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...