2011-03-05 16 views

Respuesta

6

Puede invocar setFormatterFactory(JFormattedTextField.AbstractFormatterFactory) en su objeto.

Se puede utilizar de esta manera:

// 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);   

Así que acaba de establecer la fábrica cuando se produce el evento.

Tenga en cuenta que el constructor de DefaultFormatterFactory puede tomar varios formateadores; una predeterminada, un formato de visualización cuando no tiene foco, un formato de edición cuando tiene foco y un formato nulo para cuando el campo tiene un valor nulo.

+0

¿Ha intentado llamar directamente a setFormatter en una instancia de JFormattedTextField antes de recomendar esto? Usted sabe que es un método protegido, ¿verdad? –

+0

Se perdió el hecho de que setFormatter() está protegido. –

+0

@netrom Formateador y formato no son realmente lo mismo. Aunque puedo configurar una fábrica de formateadores, no veo cómo cambiará el formato del campo. Tal vez me estoy perdiendo algo. Si tiene un ejemplo, realmente me gustaría verlo. Gracias. – m0s

1

example usa InputVerifier para agregar variaciones a un formato predeterminado. Está diseñado para Date, pero es posible que pueda adaptar el enfoque a Number.

Cuestiones relacionadas