Bonjour à tous,
Chasse au nullPointeur, pour cela voici les classes en lien avec celui-ci...
Une Ihm qui récupère les onglets dont le fameux onglets et sont getter :
Maintenant une classe Menu :
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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140 package ihm; import java.awt.FlowLayout; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JTabbedPane; import javax.swing.SwingConstants; import event.Affichage; import event.MonWindowAdapter; import ihm.onglets.Auteur; import ihm.onglets.Client; import ihm.onglets.Commande; import ihm.onglets.Editeur; import ihm.onglets.Livre; import ihm.onglets.Profil; public class Ihm extends JFrame { private static final long serialVersionUID = 1L; private static Menu menu; private static JTabbedPane onglets; private static Livre ongletLivre; private static Auteur ongletAuteur; private static Client ongletClient; private static Commande ongletCommande; private static Editeur ongletEditeur; private static Profil ongletProfil; private JPanel panZoneClient; private JPanel panHeader; //============================================================ //constructeur private Ihm() { initIhm(); } //initialisation de toute l'application private void initIhm() { //evenement de la fenêtre this.addWindowListener(new MonWindowAdapter(this)); //ajout du menu Ihm.menu = new Menu(this); //ajout des onglets onglets = new JTabbedPane(SwingConstants.NORTH); //onglets.addChangeListener(this); ongletLivre = new Livre(this); ongletAuteur = new Auteur(this); ongletClient = new Client(this); ongletCommande = new Commande(this); ongletEditeur = new Editeur(this); ongletProfil = new Profil(this); onglets.addTab(Affichage.getRessource().getString("titreongletlivre"),ongletLivre); onglets.addTab(Affichage.getRessource().getString("titreongletauteur"),ongletAuteur); onglets.addTab(Affichage.getRessource().getString("titreongletclient"),ongletClient); onglets.addTab(Affichage.getRessource().getString("titreongletcommande"),ongletCommande); onglets.addTab(Affichage.getRessource().getString("titreongletediteur"),ongletEditeur); onglets.addTab(Affichage.getRessource().getString("titreongletprofil"),ongletProfil); onglets.setOpaque(true); panHeader = new JPanel(); panHeader.setLayout(new FlowLayout()); //zone client panZoneClient = (JPanel) this.getContentPane(); panZoneClient.setLayout(new FlowLayout()); panZoneClient.add(Ihm.onglets); this.setJMenuBar(Ihm.menu); //Changer la langue event.Affichage.getChangerValeurMenu(Ihm.menu); } //============================================================ //instenciation private static Ihm ihm; public static Ihm getInstance() { if (ihm == null) { ihm = new Ihm(); } return ihm; } //============================================================ //Getter and setter public static Livre getOngletLivre() { return ongletLivre; } public static Auteur getOngletAuteur() { return ongletAuteur; } public static Client getOngletClient() { return ongletClient; } public static Commande getOngletCommande() { return ongletCommande; } public static Editeur getOngletEditeur() { return ongletEditeur; } public static Profil getOngletProfil() { return ongletProfil; } public static JTabbedPane getOnglets() { return onglets; } public static Menu getMenu() { return menu; } public static Livre getLivre() { return ongletLivre; } public static Auteur getAuteur() { return ongletAuteur; } public static Client getClient() { return ongletClient; } public static Commande getCommande() { return ongletCommande; } public static Editeur getEditeur() { return ongletEditeur; } public static Profil getProfil() { return ongletProfil; } }
Une classe ActionCRUD :
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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172 package ihm; import java.awt.Toolkit; import javax.swing.ButtonGroup; import javax.swing.JMenu; import javax.swing.JMenuBar; import javax.swing.JMenuItem; import javax.swing.JRadioButtonMenuItem; import javax.swing.KeyStroke; import event.EcouteurChoixLangue; import event.MonEcouteur; import event.itemCRUD.ActionAjouter; public class Menu extends JMenuBar { private static final long serialVersionUID = 1L; private JMenu mnuGestion; private JMenuItem itmAjouter; private JMenuItem itmModifier; private JMenuItem itmSupprimer; private JMenuItem itmQuitter; private JMenu mnuAide; //« ? » private JRadioButtonMenuItem optmFrancais; private JRadioButtonMenuItem optmAnglais; private JMenuItem itmAide; //sur linterface graphique private JMenuItem itnApropos; //de cette application private ButtonGroup grpRadio; //============================================================ //constructeur sans argument public Menu(Ihm gestion) { initMenu(gestion); } //méthode d'initialisation private void initMenu(Ihm ihm) { mnuGestion = new JMenu(); mnuGestion.setMnemonic('G'); //ajouter System.out.println(Ihm.getOnglets()); itmAjouter = new JMenuItem(new ActionAjouter(Ihm.getOnglets())); itmAjouter.setAccelerator(KeyStroke.getKeyStroke('A', Toolkit.getDefaultToolkit().getMenuShortcutKeyMask(), false)); mnuGestion.add(itmAjouter); //modifier itmModifier = new JMenuItem(); itmModifier.setAccelerator(KeyStroke.getKeyStroke('M', Toolkit.getDefaultToolkit().getMenuShortcutKeyMask(), false)); mnuGestion.add(itmModifier); //supprimer itmSupprimer = new JMenuItem(); itmSupprimer.setAccelerator(KeyStroke.getKeyStroke('S', Toolkit.getDefaultToolkit().getMenuShortcutKeyMask(), false)); mnuGestion.add(itmSupprimer); //quitter itmQuitter = new JMenuItem(); itmQuitter.addActionListener(new MonEcouteur(ihm)); itmQuitter.setAccelerator(KeyStroke.getKeyStroke('Q', Toolkit.getDefaultToolkit().getMenuShortcutKeyMask(), false)); mnuGestion.add(itmQuitter); //aide mnuAide = new JMenu(); mnuAide.setMnemonic('A'); grpRadio = new ButtonGroup(); //français optmFrancais = new JRadioButtonMenuItem(); //optmFrancais.setSelected(true); optmFrancais.addActionListener(new EcouteurChoixLangue(this)); mnuAide.add(optmFrancais); grpRadio.add(optmFrancais); //anglais optmAnglais = new JRadioButtonMenuItem(); optmAnglais.addActionListener(new EcouteurChoixLangue(this)); mnuAide.add(optmAnglais); grpRadio.add(optmAnglais); //sélectionner la langue par défaut selon le resource bundle if (event.Affichage.getLangue().equals("fr")) { optmFrancais.setSelected(true); optmAnglais.setSelected(false); } else if (event.Affichage.getLangue().equals("en")) { optmAnglais.setSelected(true); optmFrancais.setSelected(false); } //séparator mnuAide.insertSeparator(2); itmAide = new JMenuItem(); itmAide.addActionListener(new MonEcouteur(ihm)); itmAide.addActionListener(new MonEcouteur(ihm)); itmAide.setAccelerator(KeyStroke.getKeyStroke('H', Toolkit.getDefaultToolkit().getMenuShortcutKeyMask(), false)); mnuAide.add(itmAide); //A propos itnApropos = new JMenuItem(); itnApropos.addActionListener(new MonEcouteur(ihm)); itnApropos.addActionListener(new MonEcouteur(ihm)); itnApropos.setAccelerator(KeyStroke.getKeyStroke('Q', Toolkit.getDefaultToolkit().getMenuShortcutKeyMask(), false)); mnuAide.add(itnApropos); //ajouter les menu à la barre this.add(mnuGestion); this.add(mnuAide); //Changer la langue du menu event.Affichage.getChangerValeurMenu(this); } //================================================== //Getter and setter public JMenu getMnuGestion() { return mnuGestion; } public void setMnuGestion(JMenu mnuGestion) { this.mnuGestion = mnuGestion; } public JMenuItem getItmAjouter() { return itmAjouter; } public void setItmAjouter(JMenuItem itmAjouter) { this.itmAjouter = itmAjouter; } public JMenuItem getItmModifier() { return itmModifier; } public void setItmModifier(JMenuItem itmModifier) { this.itmModifier = itmModifier; } public JMenuItem getItmSupprimer() { return itmSupprimer; } public void setItmSupprimer(JMenuItem itmSupprimer) { this.itmSupprimer = itmSupprimer; } public JMenuItem getItmQuitter() { return itmQuitter; } public void setItmQuitter(JMenuItem itmQuitter) { this.itmQuitter = itmQuitter; } public JMenu getMnuAide() { return mnuAide; } public void setMnuAide(JMenu mnuAide) { this.mnuAide = mnuAide; } public JRadioButtonMenuItem getOptmFrancais() { return optmFrancais; } public void setOptmFrancais(JRadioButtonMenuItem optmFrancais) { this.optmFrancais = optmFrancais; } public JRadioButtonMenuItem getOptmAnglais() { return optmAnglais; } public void setOptmAnglais(JRadioButtonMenuItem optmAnglais) { this.optmAnglais = optmAnglais; } public JMenuItem getItmAide() { return itmAide; } public void setItmAide(JMenuItem itmAide) { this.itmAide = itmAide; } public JMenuItem getItnApropos() { return itnApropos; } public void setItnApropos(JMenuItem itnApropos) { this.itnApropos = itnApropos; } }
Et pour finir une classe ActionAjouter :
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 package event.itemCRUD; import java.awt.Component; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.AbstractAction; import javax.swing.JTabbedPane; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; public abstract class ActionCRUD extends AbstractAction { private static final long serialVersionUID = 1L; protected ActionListener delegateAction; public ActionCRUD(JTabbedPane tabbedPane, String nom) { super(nom); tabbedPane.addChangeListener(new ChangeListener() { @Override public void stateChanged(ChangeEvent e) { updateAction(tabbedPane); } }); updateAction(tabbedPane); // il faut au moins l'appeler une fois pour la première fois (un onglet étant sélectionné par défaut) } protected void updateAction(JTabbedPane tabbedPane) { Component selectedComponent = tabbedPane.getSelectedComponent(); delegateAction = getAction(selectedComponent); setEnabled(delegateAction != null); } protected abstract ActionListener getAction(Component component); @Override public void actionPerformed(ActionEvent e) { if ( delegateAction!=null ) { delegateAction.actionPerformed(e); } } }
Et maintenant la console :
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 package event.itemCRUD; import java.awt.Component; import java.awt.event.ActionListener; import javax.swing.JTabbedPane; import event.Affichage; public class ActionAjouter extends ActionCRUD { private static final long serialVersionUID = 1L; public ActionAjouter(JTabbedPane tabbedPane) { super(tabbedPane,Affichage.getRessource().getString("ajouter")); } public ActionListener getAction(Component component) { if ( component instanceof ItemAjoutable ) { ItemAjoutable itemAjoutable = (ItemAjoutable) component; return itemAjoutable.getAjoutItem(); } return null; } }
Merci pour vos aides...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 null //il vient du System.out.println... de la classe Menu Exception in thread "main" java.lang.NullPointerException at event.itemCRUD.ActionCRUD.<init>(ActionCRUD.java:18) at event.itemCRUD.ActionAjouter.<init>(ActionAjouter.java:15) at ihm.Menu.initMenu(Menu.java:46) at ihm.Menu.<init>(Menu.java:36) at ihm.Ihm.initIhm(Ihm.java:48) at ihm.Ihm.<init>(Ihm.java:39) at ihm.Ihm.getInstance(Ihm.java:90) at ihm.Lancer.charger(Lancer.java:21) at ihm.Lancer.main(Lancer.java:13)
Partager