bonjour,
voilà mon probléme: je modifie une variable que je dois passer a une autre classe dans un actionListener mais j'y arrive pas. quelqu'un sait il comment faire?
merci.
Version imprimable
bonjour,
voilà mon probléme: je modifie une variable que je dois passer a une autre classe dans un actionListener mais j'y arrive pas. quelqu'un sait il comment faire?
merci.
essaie de mettre la valeur que tu veux passer à l'autre classe dans un attribut statique.
bein au fait l'attribut en question est de type static, le probleme c'est que les modifications effectuées sur la variable a l'interieur du Listener ne sont pas prises en compte une fois sortie du listener.
merci :).
Fais nous un mini-programme en un seul fichier source qui compile qui reproduise ton problème, et on pourra regarder. Merci.
bonjour, voici un morceau de code:
et i est declaré static int i =100; au debut dans la classe.Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 private JButton getJButton() { if (jButton == null) { jButton = new JButton(); jButton.setBounds(new Rectangle(398, 520, 182, 45)); jButton.setText("autres types d'alertes"); jButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent e) { tableaux=remplit(); i=25; System.out.println(i+"dedans"); } }); } System.out.println(tableaux+"sortie"); System.out.println(i+"dehors"); return jButton; }
et il m'affiche 25 dans le listener et 100 à l'exterieur.
donc il prend pas en consideration la modification effectuée a l'interieur du Listener, meme dans le main c'est 100 qui est affiché.
merci :)
J'aurais préféré un truc complet qui compile, mais enfin...
Et comment fais-tu, dans le main, pour afficher la valeur de i après avoir appuyé sur le JButton ?
voilà comment j'affiche i dans le main et il m'affiche sa valeure initiale c-à-d 100; au fait je pense qu'il execute le Listener aprés le main???
Code:
1
2
3
4
5
6
7
8
9
10 public static void main(String[] args) { // TODO Auto-generated method stub SwingUtilities.invokeLater(new Runnable() { public void run() { premierefenetre fen = new remierefenetre(); fen.getJFrame().setVisible(true); System.out.println(i+"main"); } }); }
au fait ma question est : comment dire au main d'attendre la fin du Listener pour finir son execution? merci :)
Voilà, la raison pour laquelle ta variable n'as pas la valeur donnée dans le listener est que le listener ne s'est pas encore exécuté au moment où tu l'affiches :P
bonjour oui voilà, mais j'essaie de mettre un wait et nofify mais ça bloque j'arrive pas a debloquer car aparemment le notify n'est jamais fait comment ça marche ce truc là?:)
merci
bsr
voici ma fonction main
le dernier system.out s'affiche en premier ce qui fait que je ne peut pas sauvegarder les modification faites dans les actionListener.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 public static void main(String[] args) { // TODO Auto-generated method stub SwingUtilities.invokeLater(new Runnable() { public void run() { application appfinale=new application(); SAXBuilder sxb = new SAXBuilder(); try { //On crée un nouveau document JDOM avec en argument le fichier XML //Le parsing est terminé ;) JDOM2.document = sxb.build(new File("alerte1.xml")); } catch(Exception e){} //On initialise un nouvel élément racine avec l'élément racine du document. JDOM2.racine = JDOM2.document.getRootElement(); JDOM2.enregistreAlertes(); //application In= new application(); // @jve:decl-index=0: appfinale.getJFrame().setVisible(true); System.out.println(i); appfinale.getJButton().addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent e) { fenetreconnaissances.getJFrame().setVisible(true); System.out.println("je suis dans listener de application"); i=25; System.out.println(i); } }); // System.out.println(i+"the last"); fenetreconnaissances.getJButton().addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent e) { tableaux =fenetreconnaissances.remplit(); System.out.println("je suis dans listener de premierefetre"); i=0; System.out.println(i); System.out.println(tableaux.size()); } }); System.out.println(i+"the last"); } }); }
je peux savoir pourquoi?et comment faite pour que le main s'execute dans l'ordre?
merci:)