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
Related posts
Sin trackbacks por el momento.

Diciembre 15th, 2009 - 23:00
Como limpiar los datos del JDateChooser?????
cuando se carga el formulario el JDateChooser sale en blanco, pero despues que selecciono una fecha no hay forma de ponerlo en blanco de nuevo???
Diciembre 17th, 2009 - 21:42
claro… solo pones una fecha “nula”
Diciembre 26th, 2009 - 10:06
Hola… yo soy nuevo utilizando este calendario , que por cierto me parecio espectacular, sin embargo me gustaria que apareciera en un combo o mejor dicho adaptarlo a un combobox cualquiera que yo quiera.
Alguna idea de como hacerlo? Espero me puedan ayudar…
Gracias de antemano.
Diciembre 26th, 2009 - 18:01
Hola me llamo Manu. Soy nuevo usando el JCalendar y me preguntaba como podria hacer para agregar el jdatechooser a cualquier combobox. Si pudieran ayudarme adjuntando algun codigo. Estaria muy agradecido. Gracias de antemano.
Diciembre 30th, 2009 - 01:35
explicate mejor, en un combobox no sirve porque son componentes similares en aspecto pero diferentes en funcion… y que razon tienes para hacerlo?
Diciembre 30th, 2009 - 09:15
Bueno creo que reformulare mi pregunta xq tal vez no entendi como funciona. Bueno… lo que yo quiero hacer con este JCalendar es que en un comboBox cada vez que lo seleccione aparesca el calendario para seleccionar y una vez seleccionado se muestre en el combo. La verdad no entiendo muy bien tu ejemplo. Creo que necesito una guia mas especifica.
Gracias de antemano.
Enero 1st, 2010 - 12:41
antes deberías probar el demo que se encuentra en la página oficial, el componente ya existe y se llama JDateChooser (el que uso en este ejemplo) sobre la guía mas específica… programas con netbeans? es posible agregar el componente a la paleta y arrastrarlo
y después todo lo que tienes que hacer es seguir esta guía, entiendo lo que quieres pero lo veo totalmente inútil si existe el JDateChooser
prueba el demo
Enero 4th, 2010 - 10:38
Buen post! Lo pruebo y te Aviso!
Enero 4th, 2010 - 11:03
Habria alguna manera facil(al estilo de los jComboBox o los jTextFields) de ‘enlazarlo’ con los datos de una jTable, para que le pase los datos a la tabla o los muestre??????.
Un Saludo
Enero 8th, 2010 - 01:07
pues no tan fácil… dejame preparar un post de esto porque se necesita asignar como “editor” a las columnas de cierto tipo y te metes en un lío definiendo la tabla, si no querés esperar podés leer esto e ingeniártelas, no es exageradamente difícil tampoco
Enero 11th, 2010 - 11:19
Lo he solucionado asignandole al evento Click de la tabla que actualize el valor del jDateChooser y en el evento PropertyChange del jDateChooser que actualice el valor de la fila seleccionada de la tabla.
Enero 17th, 2010 - 00:01
hola tutututu
Enero 22nd, 2010 - 07:58
Hola . Quisiera saber que eventos acepta el JDateChooser?
Claro que se puede trabajar desde un evento externo
pero estoy haciendo un JTable usando el RowFilter para filtrarlo y pues quisiera que escogiendo una fecha del JDateChooser se filtre al escogerla.
PD: El JDateChooser no va a estar dentro de una celda sino afuera.
Salu2.
Gracias de antemano
Enero 28th, 2010 - 02:20
Puesto que el JDateChooser soporta practicamente los mismos eventos que un JTextField
Pd: Lo siento por tardar en responder.
Febrero 16th, 2010 - 15:57
Como cargar un afecha en el jDatechooser, estoy trabajando con MySQL y al recuperar alguna fecha quiero cargarlo al jDatechooser pero no logro hacerlo, ya puedo almacenar la fecha pero me falta mostrarla. si me pudieran ayudar se los agredeceria mucho.
gracias.
Febrero 16th, 2010 - 17:18
pues tienes un objeto para manejar la base de datos… y estos objetos poseen los metodos getString, getDate, etc… usas objeto.getDate(indice) y se lo asignas al componente con setDate… supon que tu objeto sea “row”
saludos
Marzo 4th, 2010 - 01:38
Cuando vas a crear un tema nuevo? ya han pasado como 4 meses ps