¡Hola a todos! Cuando desarrollamos aplicaciones de escritorio con Java Swing, a menudo necesitamos asegurarnos de que los usuarios ingresen datos en un formato específico, como números, moneda o porcentajes. Afortunadamente, no tienes que escribir tu propia lógica de validación, ya que JFormattedTextField
está diseñado precisamente para esta tarea.
En este artículo, te mostraré cómo usar JFormattedTextField
para dar formato a tus campos de texto y también cómo procesar esos valores una vez que los obtengas.
1. Formato de entrada con JFormattedTextField
El JFormattedTextField
es un componente de texto que utiliza un Formatter
para dar formato a los datos que el usuario ingresa. Aquí tienes unos ejemplos prácticos:
Para texto simple:
JFormattedTextField textFormatted = new JFormattedTextField("Texto de ejemplo");
String texto = textFormatted.getText();
Para valores de moneda:
// Crea un campo de texto con el formato de moneda por defecto de tu sistema.
JFormattedTextField currencyField = new JFormattedTextField(java.text.NumberFormat.getCurrencyInstance());
Para valores de porcentaje:
// Crea un campo de texto con el formato de porcentaje.
JFormattedTextField percentField = new JFormattedTextField(java.text.NumberFormat.getPercentInstance());
Con estas líneas, el componente se encargará automáticamente de mostrar el formato correcto y de restringir la entrada del usuario.
2. Procesando valores formateados
A veces, cuando recuperamos el valor de un campo, viene con caracteres de formato (como puntos o signos de moneda) que necesitamos eliminar antes de convertirlo a un tipo numérico.
Aquí te muestro cómo limpiar un valor para convertirlo a un tipo long
o double
:
// Asume que txtClean es un JFormattedTextField que contiene un número con puntos.
// Ejemplo: "123.456.789"
// Elimina los puntos y luego los espacios.
String cleanString = txtClean.getText().replace('.', ' ').replaceAll(" ", "");
// Convierte la cadena limpia a un valor numérico.
long val = Long.valueOf(cleanString);
System.out.println("Valor numérico: " + val);
// Si necesitas un valor decimal, puedes hacer lo siguiente:
// String cleanStringDecimal = txtClean.getText().replace(',', '.');
// double decimalVal = Double.valueOf(cleanStringDecimal);
// System.out.println("Valor decimal: " + decimalVal);
Análisis del código:
.replace('.', ' ')
: Reemplaza los puntos por espacios. Esto es útil si el formato de la moneda utiliza puntos como separadores de miles..replaceAll(" ", "")
: Elimina todos los espacios en blanco restantes.Long.valueOf(cleanString)
: Convierte la cadena limpia en un valor numérico de tipolong
.
Este enfoque es muy útil para asegurarte de que tus datos están limpios y listos para ser procesados por tu lógica de negocio.
¿Qué otros trucos de formato de datos has encontrado útiles en tus proyectos de Java Swing? ¡Déjanos un comentario y comparte tu experiencia!
Comentarios
Publicar un comentario