一千萬個為什麽

搜索

如何在運行時更改JFormattedTextField的格式?

我知道您可以將格式傳遞給JFormattedTextField構造函數,但是如何在運行時更改格式化程序?例如,我有一個應該被格式化為整數值的字段,但是當某個組合框的值被更改時,現在該字段應該采用浮點值。

最佳答案

你可以調用對象上的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 的構造函數可以使用多個格式化程序;默認值,無焦點時的顯示格式,焦點時的編輯格式,字段空值時的空格式。

轉載註明原文: 如何在運行時更改JFormattedTextField的格式?