Je ne sais pas trop où poster ma question ???
Bon je la pose ici pour le moment !
Bon en fait c'est une appli Swing, qui a une JFrame et 3 sous JPanel par exemple (appelés screen dans mon exemple et screens, la liste de ces JPanel)
Et donc chaque JPanel représente un tableau de bord qui contient une valeur qui doit être raffraichie, et je cherche à calculer dans la JFrame la somme de ces valeurs, mais avec les Threads je m'embrouille un peu aussi, y'a l'EDT, et swingWorker, mais j'ai fait autrement, même si apparemment c'est pas thread safe ...
Voilà le code :
et le problème, c'est que si je clique plusieurs fois d'affilée sur le bouton "refreshALL" ben il me foire le calcul, à cause des thread qui se croise !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 // RefreshALL et calcul JButton refresh2 = new JButton("RefreshAll"); refresh2.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e) { new Thread(new Runnable(){ public void run(){ try { for (int i = 0; i < screens.size(); i++) { Thread.sleep(50); System.out.println(" --Nom "+i+" :" +screens.get(i).getNomValeur()); screens.get(i).getRefresh().doClick(); if (i==0){ somme = 0.00; } somme += Double.valueOf(screens.get(i).getScreenCas().get(0).getPerformance().getText()); } sommeTotale.setText("Somme Totale : " + somme); } catch (InterruptedException e) { e.printStackTrace(); } } }).start(); add(sommeTotale); } });
C'est dans l'initialisation de la somme, ou j'en sais rien, si quelqu'un à une idée merci !
Partager