Bonjour
je réalise actuellement une application java dans laquelle mes boutons (qui sont en fait des JPanel + image de fond) peuvent se déplacer à gauche afin de faire apparaître des sous menus ou à droite pour revenir dans leur état initial.
Je réalise ces déplacement via 2 threads qui sont déclenchés lors d'un évenement mouseReleased associé à une récupération de coordonnées en x pour savoir si le déplacement doit s'effectuer vers la gauche ou vers la droite :
et voici le code de mon thread "dep_gauche" :Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14 public void mouseReleased(MouseEvent e) { if(e.getSource() == transactions && transactions.getBounds().x == 60){ Dep_gauche dep_gauche = new Dep_gauche(stats, graphiques, transactions, odds, options, quitter, transactions); dep_gauche.start(); } if(e.getSource() == transactions && transactions.getBounds().x == 10){ Dep_droit dep_droit = new Dep_droit(stats, graphiques, transactions, odds, options, quitter, transactions); dep_droit.start(); } }
Code:
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51 public class Dep_gauche extends Thread{ public JPanel stats, graphiques, transactions, odds, options, quitter, origine; public Dep_gauche(JPanel stats, JPanel graphiques, JPanel transactions, JPanel odds, JPanel options, JPanel quitter, JPanel origine){ this.stats = stats; this.graphiques = graphiques; this.transactions = transactions; this.odds = odds; this.options = options; this.quitter = quitter; this.origine = origine; } public void run(){ boolean condition = true; while(condition == true){ stats.setBounds(stats.getBounds().x - 1, stats.getBounds().y, 125, 30); graphiques.setBounds(stats.getBounds().x - 1, graphiques.getBounds().y, 125, 30); transactions.setBounds(stats.getBounds().x - 1, transactions.getBounds().y, 125, 30); odds.setBounds(stats.getBounds().x - 1, odds.getBounds().y, 125, 30); options.setBounds(stats.getBounds().x - 1, options.getBounds().y, 125, 30); quitter.setBounds(stats.getBounds().x - 1, quitter.getBounds().y, 125, 30); try { Thread.sleep(20); } catch (InterruptedException e) {} if(stats.getBounds().x == 10){ condition = false; if(origine == transactions){ Menu_transaction menu_transaction = new Menu_transaction(); menu_transaction.start(); } } } } }
Venons en au problème :
en fait ces déplacement s'effectuent correctement mais si j'exécute le thread gauche puis après le thread droit SANS QUITTER mon JPanel, le thread droit ne se rééxécute pas je suis obligé de le quitter pour qu'il se rééxécute...
Si je quitte mon JPanel, pas de problème...
Quelqu'un a une idée ?
Merci et bonne journée