Dans mon application JavaFX, j'obtiens une exception NullPointerException que je n'arrive pas à comprendre pour la vie de ma personne. L'application est une pseudo-base de données simple qui affiche dans ce cas les entrées de développeur dans une table avec leurs différentes données, et l'utilisateur peut ouvrir une fenêtre secondaire pour fournir une entrée et ainsi créer une nouvelle entrée. Code du contrôleur principal de la fenêtre:Application JavaFX FXML: étrange exception NullPointer sur un nœud FXML
public class MainWindowController {
/*
*/
@FXML
public static Text textMessageDisplay;
@FXML
private void handleCreateDeveloper() throws IOException {
FXMLLoader loader = new FXMLLoader(getClass().getResource("CreateDeveloperWindow.fxml"));
Scene CreateDeveloperScene;
CreateDeveloperScene = new Scene(loader.load());
Stage inputStage = new Stage();
inputStage.initOwner(theStage);
inputStage.setScene(CreateDeveloperScene);
inputStage.showAndWait();
}
public void initialize() {
developerNameColumn.setCellValueFactory(new PropertyValueFactory<>("name"));
}
/*
*/
}
Code de la fenêtre secondaire où l'utilisateur entre les données pour un nouveau développeur:
public class CreateDeveloperWindowController {
@FXML
private Button newDeveloperCreateButton;
@FXML
//TODO Check for same name
private void handleCreateDeveloperButton() {
String proposedNewDevName = newDeveloperNameTextField.getText();
String proposedNewDevPass = newDeveloperPassTextField.getText();
if (proposedNewDevName.equals("") || proposedNewDevPass.equals("")) {
MainWindowController.textMessageDisplay.setText("Name and password must not be empty!");
} else {
allDevelopers.add(new Developer(proposedNewDevName, proposedNewDevPass));
}
}
}
Ce que cela fait est une NullPointerException à la ligne
MainWindowController.textMessageDisplay.setText("Name and password must not be empty!");
dès que le bouton Créer est enfoncé avec les champs de texte de saisie vides. Pourquoi? Tout va bien par moi, textMessageDisplay est déclaré dans MainWindowControlled et initialisé à partir du fichier FXML, je peux le voir avec son texte par défaut dans la fenêtre de l'application. Alors qu'est-ce qui se passe, qu'est-ce qui me manque ici?
J'ai déjà dit il me semble que j'ai fait la déclaration et l'initialisation correctement, que la variable pointe en effet vers un objet existant. Pourriez-vous préciser ce qui ne va pas dans mon code? – Sargon1
Voir http://stackoverflow.com/questions/23105433/javafx-8-compatibility-issues-fxml-static-fields pour savoir pourquoi vous obtenez l'exception et http://stackoverflow.com/questions/34118025/javafx-pass- valeurs-d'-enfant-à-parent pour les moyens de faire ce que vous essayez de faire. –