Bonjour,
je rencontre un problème dans la gestion des évènements sur un bouton.
Dans une JDialog, j'ai une combo box et un bouton. Je souhaite que l'utilisateur choisisse ce qu'il souhaite dans mon menu déroulant et clique sur le bouton quand il a sélectionné ce qu'il souhaite. Pour chacun des fichiers d'un répertoire choisi, l'utilisateur devra choisir une option dans ma liste déroulante.
Je dois effectuer ceci dans une boucle, pour tous les fichiers que j'ai précédemment listé et inséré dans mon ArrayList.
Je rencontre donc le problème suivant : l'application n'attend pas que l'utilisateur clique sur le bouton, car l'affichage de la JDialog et le traitement de l'action du bouton se trouvent dans la boucle sur l'ensemble de ma liste de fichiers. Le résultat obtenu est que la boite de dialogue s'affiche et le choix prix en compte est le premier élément affiché par la combo box... La boucle continue et recommence, ne laissant pas à l'utilisateur le temps de cliquer...
Mon code synthétisé ressemble en gros à ceci :
J'ai testé en ajoutant une boucle while(valid) {} , qui attendait que valid passe à vrai dans la boucle while, ce qui était dans l'action du bouton, afin de stopper l'exécution de la boucle le temps que l'utilisateur clique sur le bouton, mais à ce moment là, la boucle infinie bloque l'affichage des composants dans la JDialog, et je ne peux donc pas cliquer sur le bouton indiquant que le choix a été fait, puisque le bouton n'apparait pas.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 int i=0; List list = new ArrayList(); while( j < list.size() ) {<div style="margin-left:40px">afficheDialog(); // affiche tous mes composants bouton.addActionListener(new ActionListener() {<div style="margin-left:40px">public void actionPerformed(ActionEvent e) {</div><div style="margin-left:40px"><div style="margin-left:40px">/* Je souhaite ajouter le choix fait dans la combo box à une autre ArrayList. */ autreListe.add(ma_combobox.getSelectedItem());</div>}</div>}); j++;</div>}
Si vous avez des conseils à me donner...
Cordialement,
Cedr.
Partager