Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Java] JScrollPane, JPanel, Swing

JPanel de taille variable, la JScrollBar ne suit pas

13 avril 2007 à 18:02:50

Bonjour,

Je travaille sur un projet et je bloque actuellement sur quelque chose de peut-être assez bête (mais j'ai cherché sur tout le net et à moins de ne pas avoir les bons mots-clés, je ne trouve rien).

Je fais un piano roll sur un panel en redéfinissant la méthode paint. Un piano Roll, c'est une sorte de partition (musicale) plus intuitive pour des non musiciens.
Mon pianoroll est dans un JScrollPane (c'est-à-dire que j'ai bien fait un JScrollPane(monPanel) puis j'ai ajouté l'objet ainsi créé (de type JScrollPane) au container de la fenêtre principale).

La barre de défilement verticale fonctionne bien car au moment de dessiner mon pianoRoll, la hauteur en pixels est définie. J'ai même recoder getPreferredSize pour que cela fonctionne.
En revanche, pour le défilement horizontal, j'ai un problème. Sachant que la séquence que je joue (en midi) et que le pianoroll représente, peut s'agrandir par rapport à sa taille initiale, la barre de défilement horizontale ne suit pas. Quand la séquence grandit, que la taille du piano roll (un JPanel, je rappelle) grandit, et bien la scrollbar du bas garde le même maximum.
J'ai tenté un setMaximum sur la barre et cela fonctionne sans mettre le focus sr la fin, alors je clique sur la barre pour la déplacer ou sur les flèches et aussitôt la taille maximum revient à celle du début.

Comment puis-je régler ce problème ?
Je suppose qu'il y a un evenement qui a lieu quand on clique sur la barre, quelle méthode appelle-t-il ? S'il appelle le getPreferredSize de son JPanel, le setMaximum devrait reprendre la bonne taille !

Si vous avez une idée...
Merci d'avance.
  • Partager sur Facebook
  • Partager sur Twitter