Java Swing eclipse : NullPointeur sur un getOnglet()
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 :
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 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;
}
} |
Maintenant une classe Menu :
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 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;
}
} |
Une classe ActionCRUD :
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
|
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 pour finir une classe ActionAjouter :
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
|
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;
}
} |
Et maintenant la console :
Code:
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) |
Merci pour vos aides...