|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Futur Membre du Club
![]() Étudiant Inscription : mai 2011 Messages : 22 ![]() |
Bonjour,
je travaille actuellement sur une application java graphique. En effectuant des tests avec JUnit, j'ai remarqué que celle-ci lève une exception dans à peut près 1/4 des lancements de l'application L'exception se lève lors d'un setSelected(true) sur un JRadioButtonMenuItem : Code :
Aucune information explicite n'est donnée dans le stack-trace. Avez-vous déjà rencontré cette situation ? Merci d'avance. |
||
|
|
00
|
|
|
#2 |
![]() ![]() Développeur Java/Web Inscription : avril 2002 Messages : 12 460 ![]() |
Salut,
Il y a de forte chance que cela viennent du fait que tu manipules des composants graphiques en dehors de l'EDT. Est-ce que tu respectes bien cela ? Comment est fait ton setSelected(true) ? ET où ? a++
__________________
adiGuba [ tutoriels | blog | twitter ] Rédacteur/Modérateur Java |
|
00
|
|
|
#3 | |||||||
|
Futur Membre du Club
![]() Étudiant Inscription : mai 2011 Messages : 22 ![]() |
Salut adiGuba,
Citation:
Je ne sais pas si cela fera avancer le shmilblic, mais je vais résumer mon code. 1 -> Mon Main Instancie le controlleur. 2 -> Constructeur du controlleur Code :
4 -> Instanciation de la Vue (chargement de tous les composants ...) 5 -> Controlleur.loadPreference() Code :
6 -> Vue.loadPreference() Code :
|
|||||||
|
|
00
|
|
|
#4 |
![]() ![]() Développeur Java/Web Inscription : avril 2002 Messages : 12 460 ![]() |
EDT : Event Dispatch Thread
C'est le thread chargé de gérer l'affichage des composants AWT/Swing. Toute modification de l'interface utilisateur doit être opéré dans ce thread sous peine d'erreur diverses et incompréhensibles (un peu comme la tienne). La difficulté c'est que dans le même temps il ne faut pas surcharger ce thread avec des traitements lours sous peine de gêner l'affichage et de bloquer toute l'interface graphique... Donc il faut savoir dans quel thread tu es lorsque tu fais le setSelected(). Pour savoir si tu es dans l'EDT tu peux utiliser SwingUtilities.isEventDispatchThread() ou même Thread.currentThread().getName(). En général on est dans l'EDT dans les méthodes déclenchées par les évènements, ou si on l'appel explicitement via SwingUtilities.invokeLater() ou un SwingWorker... Ensuite tu trouveras tout plein d'info là dessus sur le forum et le site... a++
__________________
adiGuba [ tutoriels | blog | twitter ] Rédacteur/Modérateur Java |
|
00
|
|
|
#5 | ||
|
Futur Membre du Club
![]() Étudiant Inscription : mai 2011 Messages : 22 ![]() |
Je te remercie de ta réponse, je verrai sa demain quand je disposerai des sources
Mais, oui il y a un mais, le soucis c'est que dans le post d'avant j'ai rétréci le code, mai voilà la méthode complète : Code :
|
||
|
|
00
|
|
|
#6 | |
![]() ![]() Développeur Java/Web Inscription : avril 2002 Messages : 12 460 ![]() |
Citation:
a++
__________________
adiGuba [ tutoriels | blog | twitter ] Rédacteur/Modérateur Java |
|
|
00
|
|
|
#7 |
|
Futur Membre du Club
![]() Étudiant Inscription : mai 2011 Messages : 22 ![]() |
Je viens de tester, et effectivement, je suis dans le thread principal (logique je pense puisque c'est au démarrage de l'application que je fait ces changements).
Sauriez vous comment je pourrait y remédier ? |
|
|
00
|
|
|
#8 |
![]() ![]() Développeur Java/Web Inscription : avril 2002 Messages : 12 460 ![]() |
__________________
adiGuba [ tutoriels | blog | twitter ] Rédacteur/Modérateur Java |
|
10
|
|
|
#9 |
|
Futur Membre du Club
![]() Étudiant Inscription : mai 2011 Messages : 22 ![]() |
Ha ok, je n'avais pas compris. Effectivement, maintenant il n'y a plus aucune erreur, merci bien
Pas sur d'avoir le temps de tout reprendre avant de devoir rendre l'application. Pour le coup, j'ai surrounder la méthode Controlleur.loadPreference(), je sais que ce n'est pas la meilleure solution, mais le temps est compté Est-ce que cela pourrait engendrer d'autre erreurs dans ce genre ? A l'instant même aucune erreur n'apparait durant toute l'exécution de l'application. |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com