Foco en componente fuera del jScrollPane
En una aplicacion Swing, tengo una cierta cantidad de campos que exceden el tamaño del panel, por lo cual se activa el scroll, el problema es cuando haciendo foco en cada uno de los campos llego a los que no se pueden visualizar(a pesar de tener foco), lo que necesitaria es que el scroll baje automaticamente y poder ver el campo con foco.
Si alguien sabe, gracias.
Si alguien sabe, gracias.
Vale, la solución es sinple, haceer un setValue(x) en la barra de scroll vertical, tomando como valor x la coordenada x del componente. Te explico.
Obtener la barra de scroll vertica:
haces un getVerticalScrollBar en to JScrollPane. Ya tienes la JScrollBar.
Ahora con éste objeto le haces un setValue(x) y la mueves donde quieres, necesitas la coordenada de tu componente.
Averiguar coordenada.
Primero tienes que saber qué componente del panel tiene el foco (se puede hacer de varias maneras, por ejemplo pregunto a tus componentes si tienen el foco (método isFocusOwner).
Ahora que ya sabes el componente haces un getBounds sobre el componente. Te devuelve un objeto Rectangle al cual puedes preguntar el valor de su coordenada x (Rectangle.getX()).
Ese valor se los asignas al setValue() de tu JScrollBar y listo.
Ya me cuentas que tal. Quizás haya una manera automática para no hacer ésto, si alguien la sabe que lo comente, interesa.
Saludos
Obtener la barra de scroll vertica:
haces un getVerticalScrollBar en to JScrollPane. Ya tienes la JScrollBar.
Ahora con éste objeto le haces un setValue(x) y la mueves donde quieres, necesitas la coordenada de tu componente.
Averiguar coordenada.
Primero tienes que saber qué componente del panel tiene el foco (se puede hacer de varias maneras, por ejemplo pregunto a tus componentes si tienen el foco (método isFocusOwner).
Ahora que ya sabes el componente haces un getBounds sobre el componente. Te devuelve un objeto Rectangle al cual puedes preguntar el valor de su coordenada x (Rectangle.getX()).
Ese valor se los asignas al setValue() de tu JScrollBar y listo.
Ya me cuentas que tal. Quizás haya una manera automática para no hacer ésto, si alguien la sabe que lo comente, interesa.
Saludos
