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
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)

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());
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
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);
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
