Poner addFocusListener a un JSpinner

Ana Bel?
08 de Septiembre del 2004
Hola, estoy intentando poner un escuchador de eventos a un JSpinner. Concretamente quiero ponerle un FocusListener. Es para que al recibir el foco realice una tarea. No se que pasa con este componente pero no hace caso. El problema es que con el mismo codigo le pongo el mismo escuchador a un JTextField y me va perfectamente. ¿Admite este componente este tipo de eventos?. Muchas gracias.

sphinx101
08 de Septiembre del 2004
Primeramente dejame decirte yo tuve el mismo problema y por mas vueltas que le daba no encontraba cual era mi error, despues de leer la documentacion me di cuenta que un JSpinner es un componente compuesto, lo que tienes que hacer es lo siguiente:

private JSpinnerDate spFecha;

spFecha[i].getEditor().getComponent(0).addFocusListener(new FocusAdapter(){
public void focusGained(FocusEvent e){
// Cuando obtiene el foco
}
public void focusLost(FocusEvent e){
// Cuando pierde el foco
}
});

con esto obtienes el primer componente que es un JFormattedTextField y a este le agregar el listener para el foco, si lo que quieres es obtener el valor que contiene cuando tiene el foco lo que tienes que hacer es esto en el metodo focusGained

public void focusGained(FocusEvent e){
JFormattedTextField ftf=(JFormattedTextField)e.getSource();
System.out.print(ftf.getValue().toString);
}

y listo, espero y te sirva de algo.

Felices lineas!

sphinx101
08 de Septiembre del 2004
Nota: spFecha no es un arreglo se me paso, debe de ser asi:

spFecha.getEditor................

Ana Bel?
08 de Septiembre del 2004
Muchas gracias por resolverme la duda. Ya sabia yo que no podia ser como el resto de componentes. Hasta otra...