(J'utilise Scene Builder) Dans ma classe de contrôleur j'ai un Combobox, quand j'ouvre une nouvelle fenêtre et je remplis la liste dans la boîte avec de nouveaux éléments, quand je ferme cette fenêtre j'ai besoin de la combobox pour changer, mais comme il ne peut pas être statique, je ne peux pas trouver un moyen.Java FXML besoin de recharger une comboBox à partir d'une autre fenêtre
classe contrôleur pour la première fenêtre (pièces Revelant)
public void initialize(URL location, ResourceBundle resources) {
readCharacters();
for (Character character : characterList) {
System.out.println(character);
}
characterBox.setValue("Chars");
characterList.sort(Comparator.comparing(Character::getPowerLevel).reversed());
characterBox.setItems(FXCollections.observableArrayList(characterList));
}
Alors, quand je presse mon bouton Nouveau Exécute:
public void addNewWindow() throws IOException {
try {
FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("newWindow.fxml"));
Parent root1 = (Parent) fxmlLoader.load();
Stage stage = new Stage();
stage.setScene(new Scene(root1));
stage.show();
} catch (Exception e) {
e.printStackTrace();
}
}
Jusqu'à ici tout va bien, quand j'appuie sur le bouton Ajouter dans la fenêtre suivante t de la classe ses exécute Controller2:
public void addNewCharacter() {
if (addNameField.getText().equals("") || xField.getText().equals("") || pField.getText().equals("")) {
Alert alert = new Alert(Alert.AlertType.INFORMATION);
alert.setTitle("Error");
alert.setHeaderText(null);
alert.setContentText("Please fill all fields");
alert.showAndWait();
} else {
Controller.characterList.add(new Character(addNameField.getText(), Double.parseDouble(xField.getText()), Double.parseDouble(pField.getText()), specialButton.isSelected()));
Controller.writeCharacters(); //this writes the characterList to a file for when i reopen the programm
}
}
Maintenant, le problème est que quand je suis fait la comboBox sur la fenêtre d'origine ne sont rechargées la nouvelle entrée, je dois rouvrir le programme pour qu'il soit mis à jour avec la nouvelle entrée. Alors, comment puis-je résoudre cela, apparemment je ne peux pas faire un champ FXML statique. Donc, je ne peux pas trouver un moyen d'envoyer des données à la ComboBox de Controller2 à Controller. J'ai besoin d'une solution autre que de faire un bouton de rechargement dans la première fenêtre.