Probleme de débogage

Résolu
coachedwin Messages postés 18 Date d'inscription   Statut Membre Dernière intervention   -  
coachedwin Messages postés 18 Date d'inscription   Statut Membre Dernière intervention   -
Bonsoir,

voila j'ai un probleme (je serais pas venu sinon^^)
j'ai ce code d'erreur
<spoiler>
Exception in thread "main" java.lang.NullPointerException 
at java.awt.Container.addImpl(Unknown Source)
at javax.swing.JToolBar.addImpl(Unknown Source)
at java.awt.Container.add(Unknown Source)
at Graphisme.<init>(Graphisme.java:81)
at Graphisme.main(Graphisme.java:105)
</spoiler>

associé à ce code java
<spoiler>
import java.awt.*; 
import java.awt.event.*;
import java.util.*;

import javax.swing.*;

@SuppressWarnings("unused")
public class Graphisme {

/**Création de la fenetre, son conteneur, et d'une barre d'outil*/
private JFrame fenetre=new JFrame("Projet"); //Le nom de la fenêtre, il faut une JFrame dans tous les cas.
private Container contenu=fenetre.getContentPane(); //Un conteneur pour y mettre le contenu de la fenêtre.
private JToolBar barre_outil=new JToolBar(); //Une barre d'outils où l'on va mettre un bouton charger, et l'heure de simulation

/**Les deux listes de séléctions*/


private JList l_liste_secteur=new JList(); //Une JList permet de séléctionner plusieurs éléments, les manipuler, ici, ce seront les secteurs.
private JList l_liste_avion=new JList(); //Idem, cf http://prevert.upmf-grenoble.fr/Prog/Java/swing/JList.html
private DefaultListModel l_avion = new DefaultListModel(); //Ca sert à le fournir à JList pour remplir la liste
private DefaultListModel l_secteur = new DefaultListModel();//Idem, cf www.developpez.net/forums/d531892/java/general-java/debuter/arraylist-jlist/

/**Les boutons (qui ne se font pas la guerre)
* Ok, j'arrête les blagues débiles*/

private JButton b_degrouper = new JButton("Dégrouper"); //Un bouton qui servira à dégrouper les zones.
private JButton b_regrouper = new JButton("Regrouper"); //Un bouton pour regrouper les zones.
private JButton b_retarder = new JButton("Retarder"); //Un bouton pour retarder l'avion séléctionner.
private JButton b_annuler = new JButton("Annuler"); //Un bouton pour annuler l'avion selectionné.
private JButton b_charger = new JButton("Charger"); //Un bouton pour lancer le chargement.

/**Zones de textes de la fenetre, et les labels*/

private JTextField retard_entrer; //Une zone de texte où écrire le retard de l'avion en minutes (sera géré le passage en heures dans la fonction retarder.
private JTextField zone_heure; //Une zone où écrire l'heure de simulation
private JTextField zone_min; //Une zone de texte où écrire la minute de simulation
private JLabel retard_aff=new JLabel("Retard"); //Un label"retard" où sera écrit "retard" avant de l'inscrire dans le textfield
private JLabel heure_aff=new JLabel("Heure"); //Un label "heure" à coté du textefield heure-simu
private JLabel min_aff=new JLabel("Minutes"); //Idem pour les minutes
private JLabel auteur=new JLabel("Made by Noms supprimés Modération CCM - Version 1.0"); //Un petit Label en bas de fenêtre de copyright^^

/** Menus et sous-menus*/

private JMenuBar menuBar=new JMenuBar(); //Barre de menus
private JMenu menu=new JMenu("Menu"); //Un bouton "Menu" dans la barre des menus
private JMenuItem menu_charger=new JMenuItem("Charger",KeyEvent.VK_C); //Un sous menu "Charger" que l'on ajoutera dans le "Menu"
private JMenuItem menu_quitter=new JMenuItem("Quitter",KeyEvent.VK_Q); //Un sous menu "Quitter" que l'on ajoutera dans le "Menu"

/**Panels de Dessin et De positionnement de tout*/

private JPanel zone_dessin=new JPanel(); //Panel où l'on va dessiner
private JPanel p_b_secteur=new JPanel(); //Panel où l'on va regrouper les boutons des fonctions secteur, juste pour la mise en forme
private JPanel p_b_avion=new JPanel(); //Panel où l'on va regrouper les boutons des fonctions avion, juste pour la mise en forme
private JPanel p_secteur=new JPanel(); //Panel où se trouvera la liste de secteurs, et les boutons, juste pour la mise en forme
private JPanel p_avion=new JPanel(); //Panel où se trouver la liste des avions,le retard en texte, et les boutons, juste pour la mise en forme
private JPanel zone_non_dessin=new JPanel(); //Panel qui concentrera tout ce qui n'est pas dessin, c'est a dire p_secteur et p_avion

/**Données à avoir pour travailler avec*/
private int echelle; //Echelle du dessin (int)
private int rapport; //Rapport distance point, distance réelle (int)
private ArrayList<Avion> liste_avion=new ArrayList<Avion>(); //Liste des avions avec lesquels on travaille.
private ArrayList<Secteur> liste_secteur=new ArrayList<Secteur>(); //Liste des secteurs avec lesquels on travaille.

/**Constructeur de la fenêtre*/
Graphisme(){

/**Ajout des menus*/

menu.add(menu_charger); //Ajout du sous-menu charger au menu
menu.add(menu_quitter); //Ajout du sous-menu quitter au menu
menuBar.add(menu); //Ajout de menu à la menubar
fenetre.setJMenuBar(menuBar); //Ajout de menubar a la fenetre
menu_quitter.addActionListener(new Action_Quitter()); //On ajoute la fonction quitter au sous menu quitter
menu_charger.addActionListener(new Action_Charger()); //On ajoute la fonction charger au sous-menu charger

/**Ajout de la barre d'outils*/

barre_outil.add(b_charger); //Ajout du bouton charger à la barre d'outils
barre_outil.addSeparator(); //On met un séparateur
barre_outil.add(heure_aff); //Ajout du label "heures"
barre_outil.add(zone_heure); //Ajout de la zone de texte où l'on va rentrer l'heure de simu
barre_outil.addSeparator(); //On met un séparateur
barre_outil.add(min_aff); //Ajout du label "minutes"
barre_outil.add(zone_min); //Ajout de la zone de texte où l'on va rentrer la minute de simu
barre_outil.setFloatable(false); //On fixe la barre d'outils, elle ne sera pas déplaçable
barre_outil.setRollover(true); //Le bouton de la barre d'outil sera surligné quand la souris passera dessus
fenetre.add(barre_outil,BorderLayout.PAGE_START); //On ajoute la barre d'outils à la fenetre, en haut

/**Ajout du Label des Auteurs en bas de la fenêtre*/
fenetre.add(auteur,BorderLayout.PAGE_END);



contenu.add(b_charger);
/**Paramétrage de la fenêtre*/

fenetre.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //La croix permet de quitter la fenêtre
fenetre.pack(); //Dimensionnement de la fenêtre
fenetre.setVisible(true); //On rend la fenêtre visible
fenetre.setResizable(false); //On interdit le redimensionnement de la fenêtre (Je me suis trop embêté pour permettre ça)
}

/**Main de test*/
public static void main(String[] args) {
Graphisme g1=new Graphisme();
g1.toString();
}









/**Classe Action Charge qui charge les fichiers dans la fenetre en action performed*/

class Action_Charger implements ActionListener {

public Action_Charger()
{
fenetre.dispose();
}
public void actionPerformed(ActionEvent e) {
System.exit(0);
}

}

/**Classe Action Quitter qui ferme la fenetre en action performed*/
class Action_Quitter implements ActionListener {
public Action_Quitter()
{
fenetre.dispose();
}
public void actionPerformed(ActionEvent arg0) {
System.exit(0);
}

}
}
</spoiler>

Attention, les avions et secteurs sont des classes avec des constructeurs et tout.
Et mon action listener de charger ne sert qu'à quitter car je n'ai pas encore codé ce qu'il fallait.
que faire?
merci d'avance

1 réponse

KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
Tu dois initialiser zone_heure car la méthode add ne peut pas avoir null comme paramètre.
0
coachedwin Messages postés 18 Date d'inscription   Statut Membre Dernière intervention  
 
c'est le seul?
merci
0
coachedwin Messages postés 18 Date d'inscription   Statut Membre Dernière intervention  
 
ca marche merci
0