Bonjour,
Je débute et tente de comprendre les mécanismes de Java.
J'ai un souci car une variable déclarée publique est "null"
Dans ce test, il y a 3 classes, la première point d'entrée crée une frame
la deuxième place les menus, enfin la dernière gère les évènements
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); } }
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 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)); } }
_obj pointe la Frame mais le label "lbl" est NULL
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 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; } } }
Merci de votre aide.
Partager