java - que - ¿Por qué JFormattedTextField es malo?
new jtextfield java (3)
Admito que JFormattedTextField no es la clase más fácil de usar, y sí tiene problemas, pero como la mayoría de los componentes, hace un trabajo razonable en algunas cosas y un mal trabajo en otras.
De hecho, le permite editar valores enteros a medida que se escriben los datos cuando utiliza un MaskFormatter. Así que para tareas simples puede ser efectivo.
La edición de datos es una tarea compleja. A veces es necesario editar los datos a medida que se ingresan (en el caso de verificar los valores enteros). A veces es necesario editar los datos después de ingresarlos (en el caso de validar una fecha). Entonces, por supuesto, debe decidir cómo manejar los datos no válidos.
Puede haber una cierta cantidad de configuración de los parámetros cuando se realizan tareas no triviales. Es posible que no siempre funcionen de la manera que usted quiere o de la forma en que espera que lo hagan, por lo que necesita experimentar para saber cuándo puede / debe usar este componente.
En esta pregunta ¿Hay alguna forma de aceptar solo valores numéricos en un JTextField? Una de las respuestas sugirió que JFormattedTextField tenía problemas.
Todavía no lo he usado, pero ¿podría alguien ampliar (o no estar de acuerdo) sobre los problemas con esta clase?
Estoy luchando con JFormattetTextField por el momento. Estoy tratando de usar NumberFormat.getPercentInstance()
para formatear mi valor porcentual.
Lo peor es que .getValue()
no devuelve el mismo valor que el usuario está viendo. En el ejemplo, si escribo 25,5%
en el campo de texto con formato, entonces lo redondeo al 26%
, pero .getValue()
devuelve 0.255
. Eso es el mal.
JFormattedTextField
es malo debido a la poca facilidad de uso. Por ejemplo, si un campo de texto solo debe ser capaz de aceptar un valor entero, JFormattedTextField
permitirá cualquier basura antigua y luego se quejará cuando se pierda el enfoque. Para empeorar las cosas, tiene un rango de comportamientos configurables cuando se pierde el enfoque (una clara señal de que ninguno de ellos es la elección correcta).
También tiene selección de formateador "k3wl". También parece tener una interacción pobre con el documento (intenta instalar un DocumentFilter
, pero eso no es parte de la interfaz del Document
).