2010-06-13 3 views
3

J'ai un JPanel avec plusieurs niveaux de composants enfants, également avec un JScrollPane. Je place un écouteur de focus sur certains composants enfants pour ajouter un peu de comportement à ces composants, mais j'aimerais aussi que ce composant défile dans la fenêtre d'affichage de JPanel lorsque l'accent est mis.Besoin de Java Swing équivalent de "scrollIntoView" du navigateur DOM

Ma question est, est-ce que quelqu'un a une fonction générale pour faire cela, similaire à la fonction DOM du navigateur "scrollIntoView"? J'ai essayé de m'embrouiller avec diverses entrées de JComponent.scrollRectToVisible mais je suppose que je n'ai pas compris le mot magique.

Merci d'avance.

Répondre

4

La chose évidente est d'appeler scrollRectToVisible sur est le JScrollPane, qui compilera bien mais ne fera pas ce que vous voulez. Vous devez appeler scrollRectToVisible sur l'objet contenu dans viewport du scrollpane. Le code devrait ressembler à quelque chose comme:

java.awt.Component focusedComponent = evt.getComponent(); 
panel.scrollRectToVisible(focusedComponent.getBounds(null)); 
repaint(); 
+0

A travaillé parfaitement. C'était l'une des choses que je croyais avoir essayées, mais je suppose que je l'ai mal fait. Merci eugener! – BCG