2010-06-19 3 views
0

Comme je l'ai dit, j'ai une application de bureau Java. L'interface contient un JList et je modifie le contenu de cette liste dans certains écouteurs personnalisés que j'ai implémentés. L'un des écouteurs parcourt tous les éléments de la liste et effectue certaines opérations qui peuvent prendre un certain temps. Je voudrais montrer à l'utilisateur l'article que je suis actuellement. Pour commencer, j'ai juste essayé d'itérer à travers les éléments de la liste et de simplement définir l'index sélectionné puis d'appeler repaint (je fais ces 2 opérations pour chaque item). Ce qui se passe est qu'il n'y a aucun changement dans l'interface pendant cette itération jusqu'à la fin, quand le dernier article est marqué comme sélectionné.application de bureau java - La modification de sélection JList ne met pas à jour l'interface

Est-ce que quelqu'un a je fais allusion à la raison pour laquelle cela pourrait se produire et comment montrer un changement dans la sélection dans un JList?

Merci, Mihaela

Répondre

1

Vous semblez faire vos opérations chronophages dans le même thread qui est responsable de la mise à jour de votre interface graphique (le Event Dispatching Thread). Votre application se bloque jusqu'à ce que l'opération soit terminée.

Jetez un oeil à Threads and Swing pour comprendre le problème, et au Using a Swing Worker Thread pour des exemples sur la façon de résoudre ce problème.

+0

wow, qui était une réponse rapide. Je vous remercie. – Mihaela

1

Pour quelqu'un qui a besoin de se renseigner sur la concurrence dans le swing, comme ce fut mon cas, je pense que le lien suivant est également d'une grande aide: Concurrency in Swing

Questions connexes