Cómo poner una fecha en interfaz gráfica java

02/10/2019

Valoración: 4.61 (7766 votos)

Insertar y mostrar fechas en una interfaz gráfica de usuario (GUI) en Java es una tarea común en el desarrollo de aplicaciones. Afortunadamente, Java ofrece diversas herramientas para gestionar fechas y mostrarlas de manera efectiva en diferentes formatos. Este artículo profundiza en las diferentes opciones, desde las clases obsoletas hasta las más modernas y recomendadas del paquete java.time, y cómo integrarlas en una GUI utilizando las librerías Swing o JavaFX.

Índice
  1. Utilizando la clase `java.util.Date` (Obsoleta)
  2. El paquete java.time : La solución moderna
    1. Clases principales del paquete java.time
    2. Mostrar la fecha en la GUI
    3. Seleccionar una fecha con un JDatePicker
    4. Tabla comparativa de opciones para manejar fechas
  3. Ejemplos en JavaFX
  4. Consultas habituales

Utilizando la clase `java.util.Date` (Obsoleta)

Aunque la clase java.util.Datees obsoleta y se desaconseja su uso en proyectos nuevos, entenderla puede ayudar a comprender la evolución de la gestión de fechas en Java. Para crear un objeto Daterepresentando una fecha específica, se puede usar un constructor con una cadena de texto en formato 'yyyy-MM-dd':

Date nacimiento = new Date("2000-12-31");

Para otros formatos, como 'dd/MM/yyyy', es necesario emplear SimpleDateFormat:

String pattern = "dd/MM/yyyy";SimpleDateFormat formatter = new SimpleDateFormat(pattern);Date dia = formatter.parse("31/12/1999");String diaString = formatter.format(dia);

Nota: La clase Datetiene limitaciones y problemas de sincronización, lo que la hace inadecuada para la mayoría de las aplicaciones modernas.

El paquete java.time : La solución moderna

El paquete java.time, introducido en Java 8, proporciona clases más robustas y fáciles de usar para manejar fechas y horas. Estas clases son inmutables, lo que simplifica el código y reduce la posibilidad de errores.

Clases principales del paquete java.time

  • LocalDate: Representa una fecha (año, mes, día) sin hora ni zona horaria.
  • LocalTime: Representa una hora (hora, minuto, segundo, nanosegundo) sin fecha ni zona horaria.
  • LocalDateTime: Combina LocalDate y LocalTime .
  • ZonedDateTime: Incluye zona horaria.
  • Instant: Representa un punto en la línea de tiempo en UTC.

Mostrar la fecha en la GUI

Para mostrar una fecha en una interfaz gráfica, usualmente se utiliza un componente de texto como un JLabelo un JTextField. El valor se obtiene de las clases de java.timey se formatea con DateTimeFormatter:

import java.time.LocalDate;import java.time.format.DateTimeFormatter;LocalDate fechaActual = LocalDate.now();DateTimeFormatter formato = DateTimeFormatter.ofPattern("dd/MM/yyyy");String fechaFormateada = fechaActual.format(formato);JLabel etiquetaFecha = new JLabel("Fecha actual: " + fechaFormateada);// ... Agregar etiquetaFecha a su panel ...

En este ejemplo, se obtiene la fecha actual, se formatea como 'dd/MM/yyyy' y se muestra en un JLabel. Se puede adaptar el formato y el componente según las necesidades de la aplicación.

como poner una fecha en interfaz grafica java - Cómo es el formato de fecha en Java

Seleccionar una fecha con un JDatePicker

Para permitir al usuario seleccionar una fecha, se puede usar un componente de selección de fecha, como el JDatePickerde las librerías de terceros (como JCalendar). Se deben incluir las librerías apropiadas y luego se puede usar:

como poner una fecha en interfaz grafica java - Cómo asignar la fecha de hoy en Java

// ... Código para inicializar JDatePicker ...JDatePicker datePicker = new JDatePicker();// ... Agregar datePicker a su panel ...// Obtener la fecha seleccionadaLocalDate fechaSeleccionada = (LocalDate) datePicker.getModel().getValue();

El código anterior mostraría cómo obtener una fecha usando JDatePicker, pero su implementación requiere añadir la librería JCalendar y su integración con Swing.

como poner una fecha en interfaz grafica java - Cómo insertar una fecha en Java

Tabla comparativa de opciones para manejar fechas

Clase Descripción Recomendado
java.util.Date Clase obsoleta No
java.util.Calendar Clase obsoleta No
java.time.LocalDate Fecha sin hora ni zona horaria
java.time.LocalTime Hora sin fecha ni zona horaria
java.time.LocalDateTime Fecha y hora sin zona horaria
java.time.ZonedDateTime Fecha y hora con zona horaria Sí (para aplicaciones internacionales)

Ejemplos en JavaFX

Para las interfaces gráficas construidas con JavaFX, la integración es similar, empleando componentes como Label, TextFieldy posiblemente un DatePickerintegrado en JavaFX.

import javafx.scene.control.Label;import javafx.scene.control.DatePicker;import java.time.LocalDate;import java.time.format.DateTimeFormatter;DatePicker datePicker = new DatePicker();// ... Agregar datePicker a la escena ...datePicker.setOnAction(e->{ LocalDate fechaSeleccionada = datePicker.getValue(); DateTimeFormatter formato = DateTimeFormatter.ofPattern("dd-MM-yyyy"); String fechaFormateada = fechaSeleccionada.format(formato); Label lblFecha = new Label("Fecha seleccionada: " + fechaFormateada); // ... Agregar lblFecha a la escena ...});

Este ejemplo, muestra como obtener la fecha seleccionada por el usuario en un DatePicker de JavaFX y presentarlo en un Label.

como poner una fecha en interfaz grafica java - Cómo mostrar la fecha en Java

Consultas habituales

  • ¿Cómo formatear una fecha en Java? Usar DateTimeFormatter con el patrón deseado.
  • ¿Cómo obtener la fecha actual en Java? Usar LocalDate.now() o LocalDateTime.now() .
  • ¿Cómo calcular la diferencia entre dos fechas? Usar Period.between(fecha1, fecha2) .
  • ¿Qué librería usar para un DatePicker en Swing? Se recomienda buscar librerías de terceros como JCalendar.
  • ¿Cómo manejar zonas horarias en Java? Usar ZonedDateTime .

La gestión de fechas en las interfaces gráficas de Java se ha simplificado considerablemente con el paquete java.time. Utilizar estas clases modernas mejora la legibilidad, mantenibilidad y robustez del código, a diferencia de las clases obsoletas.

Subir