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.
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 : 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 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 ?
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![]()
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 : 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
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![]()
Partager