Control del focus en un JComboBox

Quiero poder controlar el focus de cada objecto que tengo en las ventanas cuando el tabulador es pulsado. Este control funciona en los campos textfield pero no en un objeto tipo JComboBox, en este caso, siempre me lanza un evento key, pero del siguiente objeto al JcomboBox.
¿Es posible poder controlarlo?

1 Respuesta

Respuesta
1
He estado echándole un vistazo a tu problema y la verdad es que me ha extrañado mucho. Echándole un vistazo a las apis de java he encontrado que jcombobox tiene un método llamado isFocusTraversable(), este método devuelve true si el combo puede recibir el foco. Si le hechas un vistazo a la descripción que viene con el método podrás ver que devuelve false si el como es editable, ya que en esta caso es el componente de edición el que recibe el foco.
Por la información que me das desconozco si este es tu caso o no, pero puede ser un buen punto para empezar a investigar a que se debe tu problema.
Hola!
Muchas gracias por tu respuesta.
Te explico brevemente mi caso. Tengo un JComboBox que no es editable. Yo quiero controlar el focus lost y el request focus de ese objeto, ya que dependiendo del estado en que se encuentre la ventana, me interesa que el siguiente objeto del ComboBox sea un campo u otro.
El problema me aparece cuando pulso el tabulador sobre el, no puedo controlar el evento del KEY_TAB sobre el ComboBox, ya que me lanza un evento key pero del siguiente objeto a el, que es un textfield.
No se si me he explicado muy bien...
Muchas gracias,
Saludos,
Nerea
Creo que el problema esta en que no controlas el evento adecuado. Intentas controlar el foco mediante la captura e tecla y ese no es el mejor método.
Para controlar el foco necesitas crear una clase que implemente el interfaz FocusListenter, si le echas un vistazo a la especificación podrás ver que tiene dos métodos:
FocusGained, para cuando el componente recibe el foco y focusLost, para cuando el componente pierde el foco, que es precisamente el evento que quieres controlas.
Una vez que hayas creado la clase, debes crear un objeto y pasárselo a tu objeto jcomboBox, mediante le método addFocusListener.
Con esto creo que deben solucionarse tus problemas
Hola!
Ya tengo una clase que implementa el focusListener y el keyListener. Quiero controlar que cuando pulsemos TAB o RETURN en un campo, este pase el foco al siguiente objeto que yo le indique, no el siguiente objeto según el orden de creación. Por ello toda la nevegacion de la ventan la controlo yo, pero al hacer un requestFocus de unobjeto tipo Textfiel, se lanzan los eventos de key de este objeto. Eso es lo que yo quiero evitar, y no puedo.
Muchas gracias
Nerea
Siento muchísimo la tardanza pero he estado realmente liado.
Para establecer el orden del foco debes utilizar el siguiente método:
public void setNextFocusableComponent(Component aComponent) , que aparece en todas las clases derivadas de component.
Con este elemento lo que haces es indicar cual sera el elemento que recibirá el foco cuando lo pierda el componente actual, para ello simplemente debes pasar como parámetro dicho elemento

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas