/ / Як змінити формат JFormattedTextField під час виконання? - java, гойдалка

Як змінити формат JFormattedTextField під час виконання? - java, гойдалки

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

Відповіді:

7 для відповіді № 1

Ви можете покликатись setFormatterFactory (JFormattedTextField.Ab абстрактFormatterFactory) на твій об'єкт.

Ви можете використовувати його таким чином:

// 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 для відповіді № 2

Це приклад використовує InputVerifier щоб додати варіанти до формату за замовчуванням. Він розроблений для Date, але ви, можливо, зможете адаптувати підхід Number.