Sé que puede pasar un formato al constructor JFormattedTextField, pero ¿cómo cambiaría el formateador en tiempo de ejecución? Por ejemplo, tengo un campo que se supone formateado para valores enteros, pero cuando se cambia el valor de un cierto cuadro combinado, ahora se supone que el campo debe tomar valores flotantes.¿Cómo cambiar el formato de un JFormattedTextField en tiempo de ejecución?
5
A
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.
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
- 1. ¿Cómo cambiar CurrentCulture en tiempo de ejecución?
- 2. ¿Cómo cambiar AndroidManifest en tiempo de ejecución?
- 3. Estricto tiempo de 24 horas en JFormattedTextField
- 4. Cómo cambiar sql_mode en el tiempo de ejecución
- 5. Cambiar la orientación en tiempo de ejecución
- 6. Cambiar el título de MenuItem en tiempo de ejecución
- 7. Cambiar fuente en tiempo de ejecución
- 8. Cómo cambiar la extensión de archivo en tiempo de ejecución
- 9. Cambiar el idioma de NSLocalizedString() en tiempo de ejecución
- 10. Android: cambiar el color de forma en tiempo de ejecución
- 11. cómo cambiar los errores de tiempo de ejecución en inglés
- 12. WPF: Cómo cambiar la CurrentUICulture en tiempo de ejecución
- 13. Cómo medir el tiempo de ejecución de un pepino paso
- 14. cómo cambiar el formato de página en Runtime? (Jasperreport)
- 15. ¿Cómo cambiar QGLFormat para un QGLWidget existente en tiempo de ejecución?
- 16. ¿Cómo cambiar el registro de dependencia en tiempo de ejecución usando un inyector simple?
- 17. Android - Cambiar diseño de fragmento en tiempo de ejecución
- 18. Tutorial de estilos de Delphi VCL: cómo cambiar el estilo en el tiempo de ejecución
- 19. Cambiar el formato de un elemento ComboBox
- 20. ¿Cambiar dirección/puerto de WSDL EndPointAddress en tiempo de ejecución?
- 21. Cambiar barra de aplicaciones buttonicon en tiempo de ejecución
- 22. ¿Cómo cambias el tamaño de Fancybox en tiempo de ejecución?
- 23. ¿Es posible cambiar app.config en tiempo de ejecución?
- 24. EF 5 Cambiar cadena de conexión en tiempo de ejecución
- 25. JFormattedTextField posición de cursor en el foco
- 26. Cómo cargar un archivo jar en el tiempo de ejecución
- 27. ¿Cómo cambiar el nivel de slf4j en el tiempo de ejecución?
- 28. Cambiar la configuración regional en tiempo de ejecución en Swing
- 29. ¿Cómo cambiar la configuración extraParams de un proxy en tiempo de ejecución en extjs?
- 30. ¿Cómo cambiar el tipo de UIBarButtonItem en UINaviagationBar en tiempo de ejecución?
¿Ha intentado llamar directamente a setFormatter en una instancia de JFormattedTextField antes de recomendar esto? Usted sabe que es un método protegido, ¿verdad? –
Se perdió el hecho de que setFormatter() está protegido. –
@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