/ / Как да промените формата на JFormattedTextField по време на изпълнение? - Java, люлка

Как да промените формата на JFormattedTextField по време на изпълнение? - java, люлка

Знам, че можеш да прехвърлиш форматКонструктор JFormattedTextField, но как бихте променили форматирането по време на изпълнение? Например имам поле, което би трябвало да бъде форматирано до целочислени стойности, но когато стойността на дадено комбинирано поле се промени, сега полето би трябвало да взема флоат стойности.

Отговори:

7 за отговор № 1

Можете да се позовете 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 за отговор № 2

Това пример употреби InputVerifier за добавяне на варианти към формат по подразбиране. Той е предназначен за Date, но може да успеете да адаптирате подхода към Number.