Bonjour,
Je débute dans Java et me familiarise avec le langage, d'où ma question surement simpliste.
Mon objectif est de gérer un menu déroulant.
J'ai 3 classes : MaFrame qui initialise une fenetre, MenuFenetre qui crée le menu et DispatchAction qui gère les évènements.
Lors du choix de menu, c'est DispatchAction qui réagit et je voudrai agir sur la variable "lbl" définie dans Maframe. Or celle-ci est nulle, pourquoi ?
Voici le code :
MaFrame
MenuFenetre
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 import java.awt.*; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; public class MaFrame extends Frame { private static final long serialVersionUID = 1L; public Label lbl; public MaFrame m; public MaFrame() { super(); setTitle(" Titre de la Fenetre "); setSize(300, 350); MenuFenetre mf = new MenuFenetre(this); setMenuBar(mf); setVisible(true); // affiche la fenetre addWindowListener(new WindowAdapter() {public void windowClosing(WindowEvent e){System.exit(0);}}); } public static void main(String[] args) { MaFrame m =new MaFrame(); Label lbl=new Label("Essai de texte"); lbl.setName("lbl"); m.add(lbl); } }
et DispatchAction
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 import java.awt.*; public class MenuFenetre extends java.awt.MenuBar { private static final long serialVersionUID = 1L; public MenuItem itemQuitter, itemNouveau, itemApropos; public MaFrame m; public MenuFenetre(MaFrame m) { Menu menuFichier = new Menu(" Fichier "); itemNouveau = new MenuItem(" Nouveau "); menuFichier.add(itemNouveau); add(menuFichier); itemNouveau.addActionListener(new DispatchAction(DispatchAction.NEW,m)); } }
Merci de votre aide.
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 import java.awt.event.ActionEvent; import java.awt.event.ActionListener; public class DispatchAction implements ActionListener{ static final int NEW =1; protected MaFrame _obj; protected int _type; DispatchAction(int type,MaFrame obj){ _obj=obj; _type=type; } public void actionPerformed(ActionEvent e) { switch (_type) { case NEW: System.out.print (_obj.lbl.toString()); // ERREUR break; default: break; } } }
Partager