Blog de Nakpanzer

15Dic/09

JCalendar y JDateChooser, un ejemplo práctico.

Extrañamente siento un Déjà vu al escribir esta entrada, puesto que en varias ocasiones ha sido eliminada de este blog por problemas externos a mi persona. No tengo backup, así que escribo este artículo por terecera vez :P

JCalendar es un componente desarrollado por Kai Toedter, y sin duda alguna de gran utilidad a la hora de desarrollar aplicaciones de escritorio en Java, ya que en el JDK no se incluye ningún componente similar a este (el SDK de .Net incluye uno, y muy bueno)

jdc0

Lo primero que debemos hacer es agregarlo al classpath y agregarlo a la clase en la que estamos trabajando (yo uso Netbeans, puedes agregarlo también a la paleta) ademas de agregar otras clases que son de ayuda para el manejo de fechas.

import com.toedter.calendar.JDateChooser;
import java.util.Date;
import java.util.Calendar;
import java.text.SimpleDateFormat;

En este ejemplo llamaré jdc al JDateChooser.

JDateChooser jdc = new JDateChooser();

Por defecto, se crea un componente que inicia vacío y con MM-dd-yyyy para el formato de la fecha. Esto se puede cambiar para que inicie con la fecha del sistema, y con un formato de fecha larga ;)

Calendar cal = Calendar.getInstance();
jdc.setDateFormatString("EEEE d 'de' MMMM 'de' yyyy");
jdc.setDate(cal.getTime());

jdc1

O una fecha corta con barras diagonales:

jdc.setDateFormatString("dd/MM/yyyy");

Esto es lo más fácil, pero lo que realmente nos interesa de este componente, mas que darle formato a las fechas, obtener la fecha introducida por el usuario y guardarla en una base de datos o darle formato a ésta para mostrarla posteriormente en un informe por ejemplo. Por desgracia, cuando tuve que buscar información del manejo de éste, solo encontré un método rústico y rudimentario para obtener la fecha, pero existe otro método (el canónico): Simplemente se toma la fecha y se le da formato :xD: es mucho mas cómodo que obtener año, mes y día, y en base a eso construir la fecha.

Date fecha = jdc.getDate();
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
sdf.format(fecha);

jdc2

Si solo necesitamos el año de la fecha seleccionada, se puede dar formato a esta para mostrar solo el año, o tomar únicamente el año del componente:

jdc.getCalendar().get(Calendar.YEAR);

Imagínense formar una fecha en base a este método. Saludos ;)