martes, 17 de julio de 2012

Detectar cambio de fecha en un JCalendar

En este post voy a mostrar la forma de cómo capturar un evento de cambio de día en un JCalendar. Aunque parece ser algo trivial es un problema con el que los programadores que alguna vez hemos usado este componente de Kai Tödter nos encontramos de manera recurrente. Anteriormente había mostrado la manera de cómo capturar la fecha en un JDateChososer y ahora les presento una manera práctica de cómo escuchar un evento de cambio de día en un JCalendar. Para el cambio de mes o de año sería algo similar. El código que se requiere es tan simple como esto:

private void agregarOyente() {
        cldFecha.getDayChooser().addPropertyChangeListener(
                new java.beans.PropertyChangeListener() {

                    @Override
                    public void propertyChange(java.beans.PropertyChangeEvent evt) {
                        if (evt.getPropertyName().compareTo("day") == 0) {
                            SimpleDateFormat formatoDeFecha = new SimpleDateFormat("dd/MM/yyyy");
                            txtFechaSeleccionada.setText(formatoDeFecha.format(cldFecha.getDate()));
                        }
                    }
                });
    }

También les adjunto un proyecto en Netbeans listo para descargar y modificar.


Eso es todo por ahora, me despido y hasta una próxima oportunidad.

8 comentarios:

Anónimo dijo...

Gracias man, me sirvio bastante

Dobuta dijo...

muchas gracias, habia encontrado otras soluciones mas dificiles, esta es clara y precisa. gracias de nuevo

Luis francisco dijo...

Muy práctico el método y muy útil.

Gracias.

Luis francisco dijo...

Muy práctico el método y muy útil.

Gracias.

Anónimo dijo...

esto no me funcinona, simplemente no ocurre el evento después de elegir una fecha en el jDateChooser. . . ?????

Andres Suarez dijo...

hola. alguien tiene idea de como lograr que una vez que se este sobre el panel de días de un JCalendar poder desplazarse con las flechas del teclado sobre los días hasta elegir el deseado y una vez elegido dar enter y que esto cierre el JCalendar. Lo que necesito es poder utilizar un calendario utilizando el teclado y no el mause.. lo quiero hacer con un JDateChooser y no lo puedo lograr y con el JCalendar logro moverme en el panel de días pero no puedo cerrarlo al calendario al dar enter.. gracias

yoanguila dijo...

Hola!, ¿Cómo sería en el JDateChooser de Tödter?, intento usando el mismo código debajo del constructor en mi JFrame y le quito .getDayChooser() porque no es un método de JDateChooser y cuando lo ejecuto no hace nada, es decir reemplacé el código dentro del if con un simple: JTextField.setText("Funciona"); para probarlo, pero no hace nada... ¿Qué podrá ser?

ELDER MOGOLLON dijo...

Muchas gracias por tu aporte, me sirvió de mucho.

Publicar un comentario