J'ai un Gui avec plusieurs classes différentes qui utilise le même eventhandler. Un problème auquel je n'arrive pas à trouver de solution est comment éviter d'obtenir une exception nullpointer lorsque le gestionnaire d'événements recherche l'appel de la bonne méthode et tombe sur un bouton qui doit encore être initialisé. J'ai quelques boutons qui ne seront initialisés que lorsque l'utilisateur entrera dans une étape createAccountGui.JavaFX eventhandler nullpointerException
public class GuiHandler implements EventHandler<ActionEvent> {
// this class take care off the EventHandler (buttons, all the buttons method).
private UserGui uG;
private AdvSearch aS;
private LogIn logI;
private CreateAccGui cAG;
private OrganizerGui oG;
private AdminGui aG;
private PersonRegister pR;
public GuiHandler() {
uG = new UserGui(this);
}
À moins CreateAccGui a été initialisé, chaque fois qu'il vient à la cAG.getRegistrate() je reçois un NullPointerException. Est-ce que n'importe qui a une manière intelligente de manipuler ce genre de problème sans devoir le diviser en plusieurs gestionnaires différents.
@Override
public void handle(ActionEvent e) {
try {
//where all the button goes 2 when clicked on and perform the method they are supposed 2 do
// UserGui class buttons
if(e.getSource() == uG.getLogInB()) {
logI = new LogIn(this);
} else if (e.getSource() == uG.getAdvSearch()) {
aS = new AdvSearch(this);
} else if (e.getSource() == uG.getSearch()) {
}
// the buttons in LogIn class
else if(e.getSource() == logI.getSignIn()) {
signIn();
} else if(e.getSource() == logI.getCreateAcc()) {
logI.logInStage.close();
cAG = new CreateAccGui(this);
}
//the buttons in CreateAccGui class
else if(e.getSource() == cAG.getRegistrate()) {
System.out.println("it stop here on registrate");
createAccount();
} else if(e.getSource() == cAG.getCancelReg()) {
cAG.getCreateStage().close();
logI = new LogIn(this);
}
//the buttons in AdminGui for setting text from the admin field 2 the userGui
else if(e.getSource() == aG.getAdmLogout()) {
aG.stage.close();
} else if(e.getSource() == aG.getHomeAreaButton()) {
uG.getHomeNews().setText(aG.getHomeArea().getText());
} else if(e.getSource() == aG.getAboutButton()) {
uG.getAboutArea().setText(aG.getAboutArea().getText());
} else if(e.getSource() == aG.getRentButton()) {
uG.getRentArea().setText(aG.getRentArea().getText());
}
} catch(NumberFormatException nfe) {
JOptionPane.showMessageDialog(null, "Feil format på noen felter, gjerne endre på dem", "Nummer Format", JOptionPane.ERROR_MESSAGE);
}
} // End of Handler method
}// End of GuiHandler class
Merci, ça marche, mais je pense qu'il peut se chevaucher avec d'autres boutons avec des points si certains boutons ont le même nom, comme on compare le getText() du bouton. Im encore un novice en Java donc si je me trompe me corriger ^^, –