-
Mettre a jour mon IHM
Bonjour,
je suis en train de faire une petite IHM pour mon application d'imagerie.
L'interface se compose de deux colonnes (Box.createVerticalBox()) dans lesquelles je mets ce que je souhaite.
Mais mon interface doit se mettre à jour interactivement en fonction de se qui se passe dans mon application.
Et notamment voilà mon problème :
- dans une de mes colonnes, j'ai un JPanel qui ne comporte qu'un simple JLabel la plupart du temps.
- Mais je voudrais pouvoir modifier le contenu de se panneau (je sais faire) en fonction de se qui se passe dans mon application.
- J'ai utiliser les méthodes "updateUI" et "repaint" pour forcer le ré-affichage de mes panneaux, mais rien à faire l'affichage est invariant :(
Est ce que quelqu'un pourrait m'aider ?
Merci par avance...
-
Que l'affichage reste invariant par repaint est tout de même hautement étonnant.
Normalement la méthode orthodoxe est d'utiliser revalidate, mais quelques fois cela ne suffit pas et il faut en plus un repaint.
Et quand tu dois faire commuter plusieurs affichages, la méthode la moins prise de tête est d'utiliser un CardLayout. Tout va bien avec ce truc, plus besoin de criser avec le reste.
Mais... si tu es obligé dans rester avec ta méthode actuelle, regardes si :
- ta GUI est effectivement changée avant le repaint
- évidemment si tout se passe dans EDT (mais quand il y a un problème de ce coté là cela donne des bugs plus vicieux)
- normalement, avec ce que tu nous dis, si tu rajoutes un JLabel("toto") à ton box vertical, tu devrais le voir immédiatement. Est-ce le cas ?
-
Je sais que cela est étonnant, mais je n'avais pas de changement.
Finalement, j'ai opté pour la soution suivante, certe pas très jolie, mais efficace :
- Comme l'ojet à mettre à jour était en fin de "VerticalBox", je le supprime et ré-insère à chaque modification.
C'est moche, mais ça marche.