heithemnacer
Messages postés11Date d'inscriptionjeudi 24 février 2011StatutMembreDernière intervention 3 décembre 2012
-
10 mars 2012 à 18:30
heithemnacer
Messages postés11Date d'inscriptionjeudi 24 février 2011StatutMembreDernière intervention 3 décembre 2012
-
12 mars 2012 à 18:48
Salut à tous,
svp aider moi c'est urgent j'ai rencontré un problème dans mon projet de fin d'etude (je travaille avec Eclipse)
voila l'erreur:Exception in thread "main" java.lang.NullPointerException
at design3d.swing.PanneauLogement.<init>(PanneauLogement.java:25)
//Enumération des clés d?accès aux actions disponibles sur la vue.
public enum ActionType {UNDO, REDO, ADD_MEUBLE_LOGEMENT, DELETE_MEUBLE_LOGEMENT, DELETE, CREATE_WALLS}
//Créations des actions de la vue.
createActions(controleur);
//Modification de la barre de menus.
setJMenuBar(getLogementMenuBar());
//Ajout de la barre d?outils et des panneaux à la vue.
getContentPane().add(getToolBar(), BorderLayout.NORTH);
getContentPane().add(getPanneauMeubleCatalogue(controleur));
getContentPane().add(getMainPane(logement, controleur));
}
//Crée les actions associées à cette vue, à partir des propriétés en ressource.
private void createActions(final ControleurLogement controleur) {
//Renvoie la barre de menus associée à cette vue.
private JMenuBar getLogementMenuBar() {
ActionMap actions = getActionMap();
//Création du menu Edition à partir de sa pseudo-action associée.
JMenu editMenu = new JMenu(new ResourceAction(this.resource, "EDIT_MENU"));
editMenu.setEnabled(true);
//Ajout des éléments du menu Edition configurés à partir de leur action.
editMenu.add(actions.get(ActionType.UNDO));
editMenu.add(actions.get(ActionType.REDO));
//Création du menu Meubles.
JMenu meubleMenu = new JMenu(new ResourceAction(this.resource, "FURNITURE_MENU"));
meubleMenu.setEnabled(true);
//Ajout des éléments du menu Meubles configurés à partir de leur action.
meubleMenu.add(actions.get(ActionType.ADD_MEUBLE_LOGEMENT));
meubleMenu.add(actions.get(ActionType.DELETE_MEUBLE_LOGEMENT));
//Création de la barre de menus avec les menus Edition, Meubles et Plan.
JMenuBar menuBar = new JMenuBar();
menuBar.add(editMenu);
menuBar.add(meubleMenu);
return menuBar;
}
//Renvoie la barre d?outils associée à cette vue.
private JToolBar getToolBar() {
JToolBar toolBar = new JToolBar();
ActionMap actions = getActionMap();
//Ajout des boutons à la barre d?outils dont les icônes et les listeners sont configurés à partir des actions associées à cette vue.
toolBar.add(actions.get(ActionType.ADD_MEUBLE_LOGEMENT));
toolBar.add(actions.get(ActionType.DELETE_MEUBLE_LOGEMENT));
toolBar.addSeparator();
toolBar.add(actions.get(ActionType.UNDO));
toolBar.add(actions.get(ActionType.REDO));
return toolBar;
}
//Active ou désactive l?action qui correspond à la clé actionType.
public void setEnabled(ActionType actionType, boolean enabled) {
getActionMap().get(actionType).setEnabled(enabled);
}
//Modifie le texte et la description courte des actions Annuler/Refaire.
public void setUndoRedoName(String undoText, String redoText) {
setNameAndShortDescription(ActionType.UNDO, undoText);
setNameAndShortDescription(ActionType.REDO, redoText);
}
//Récupération des vues de l?arbre du catalogue et du tableau des meubles.
JComponent vueCatalogue = controleur.getControleurCatalogue().getVue();
JComponent vueMeuble = controleur.getControleurMeuble().getVue();
//Création d?un panneau partagé qui visualise les deux vues dans des panneaux à ascenseurs.
JSplitPane panneauMeubleCatalogue =new JSplitPane(JSplitPane.VERTICAL_SPLIT, new JScrollPane(vueCatalogue), new JScrollPane(vueMeuble));
//Redimensionnement continu pendant le déplacement de la barre de division.
panneauMeubleCatalogue.setContinuousLayout(true);
//Affichage en un clic d?une ou de l?autre partie du panneau.
panneauMeubleCatalogue.setOneTouchExpandable(true);
//Changement du poids des composants du panneau partagé pour qu?après un redimensionnement du panneau, ils gardent les mêmes proportions verticalement
panneauMeubleCatalogue.setResizeWeight(0.5);
return panneauMeubleCatalogue;
}
//Renvoie le panneau principal ajouté au centre du composant HomePane dans son constructeur.
private JComponent getMainPane(Logement logement, ControleurLogement controleur) {
//Renvoie le panneau qui contient la vue du plan et la vue 3D du logement.
private JComponent getPlanView3DPane(Logement logement, ControleurLogement controleur) {
JComponent planView = controleur.getControleurPlan().getVue();
//Création du composant de la vue 3D du logement.
JComponent view3D = new LogementComponent3D(logement);
view3D.setPreferredSize(planView.getPreferredSize());
view3D.setMinimumSize(new Dimension(0, 0));
//Ajout des deux composants dans un panneau partagé.
JSplitPane planView3DPane = new JSplitPane(JSplitPane.VERTICAL_SPLIT,new JScrollPane(planView), view3D);
planView3DPane.setContinuousLayout(true);
planView3DPane.setOneTouchExpandable(true);
planView3DPane.setResizeWeight(0.5);
return planView3DPane;
}
}
Bien sur il y a d'autres classes et voila le constructeur de la classe ControleurLogement:
public ControleurLogement(Logement logement, PreferencesUtilisateur preferences) {
KX
Messages postés16753Date d'inscriptionsamedi 31 mai 2008StatutModérateurDernière intervention25 novembre 20243 020 10 mars 2012 à 18:49
Il faudrait que tu rajoutes quelques tests pour identifier ce qui cause l'exception :
if (this.selectToggleModel==null)
System.err.println("this.selectToggleModel==null");
if (controleur==null)
System.err.println("controleur==null");
else
if (controleur.getControleurPlan()==null)
System.err.println("controleur.getControleurPlan()==null");
this.selectToggleModel.setSelected(controleur.getControleurPlan().getMode() == ControleurPlan.Mode.SELECTION);
heithemnacer
Messages postés11Date d'inscriptionjeudi 24 février 2011StatutMembreDernière intervention 3 décembre 2012 11 mars 2012 à 12:56
ok je vais tester et je te donne le résultats
merci en tout cas :)
heithemnacer
Messages postés11Date d'inscriptionjeudi 24 février 2011StatutMembreDernière intervention 3 décembre 2012 12 mars 2012 à 14:57
Salut, voila le résultats de test: controleur.getControleurPlan()==null
svp n'hésiter pas de m'aider c'est urgent
et merci d'avance :)
KX
Messages postés16753Date d'inscriptionsamedi 31 mai 2008StatutModérateurDernière intervention25 novembre 20243 020 12 mars 2012 à 15:06
"c'est urgent", tu as quand même mis deux jours pour faire un copier-coller...
Dans le code que tu as mis il n'y a que le constructeur de la classe ControleurLogement, ce qu'il faudrait c'est avoir le code de la méthode getControleurPlan pour savoir pourquoi elle te renvoie null !
heithemnacer
Messages postés11Date d'inscriptionjeudi 24 février 2011StatutMembreDernière intervention 3 décembre 2012 12 mars 2012 à 16:16
voila la méthode:
public ControleurPlan getControleurPlan() {
return this.controleurPlan;
}
//Initialisation des cinq états possibles.
this.selectionState = new SelectionState();
this.selectionMoveState = new SelectionMoveState();
this.rectangleSelectionState = new RectangleSelectionState();
this.wallCreationState = new WallCreationState();
this.newWallState = new NewWallState();
//Attribution de l?état de sélection par défaut.
setState(this.selectionState);
}
//d'autres méthodes
.........
.........
}
KX
Messages postés16753Date d'inscriptionsamedi 31 mai 2008StatutModérateurDernière intervention25 novembre 20243 020 12 mars 2012 à 16:47
Ce qu'il faut trouver c'est pourquoi controleurPlan est égal à null lorsque tu le passes en paramètre de ton constructeur PanneauLogement. Par exemple, dans le constructeur de ControleurLogement il n'y a nul part de " this.controleurPlan = new ControleurPlan()", il faudrait vérifier si c'est normal ou corriger cela.
Trouvez des réponses à vos questions sur les langages, les frameworks et les astuces de codage. Échangez avec d'autres développeurs passionnés pour améliorer vos compétences en programmation et rester au fait des dernières tendances du secteur.
11 mars 2012 à 12:56
merci en tout cas :)
12 mars 2012 à 14:57
svp n'hésiter pas de m'aider c'est urgent
et merci d'avance :)
12 mars 2012 à 15:06
Dans le code que tu as mis il n'y a que le constructeur de la classe ControleurLogement, ce qu'il faudrait c'est avoir le code de la méthode getControleurPlan pour savoir pourquoi elle te renvoie null !
12 mars 2012 à 16:16
public ControleurPlan getControleurPlan() {
return this.controleurPlan;
}
et voila la classe ControleurPlan:
package design3d.swing;
.........
.........
public class ControleurPlan {
//des attributs
.........
.........
.........
public ControleurPlan(Logement logement, PreferencesUtilisateur preferences, UndoableEditSupport undoSupport) {
this.logement = logement;
this.preferences = preferences;
this.undoSupport = undoSupport;
this.resource = ResourceBundle.getBundle(ControleurPlan.class.getName());
this.vuePlan = new PlanComponent(logement, preferences, this);
//Initialisation des cinq états possibles.
this.selectionState = new SelectionState();
this.selectionMoveState = new SelectionMoveState();
this.rectangleSelectionState = new RectangleSelectionState();
this.wallCreationState = new WallCreationState();
this.newWallState = new NewWallState();
//Attribution de l?état de sélection par défaut.
setState(this.selectionState);
}
//d'autres méthodes
.........
.........
}
12 mars 2012 à 16:47