J'utilise des fichiers .FXML pour la couche de vue de mon application. Chaque FXML a un contrôleur attaché à celui-ci
<AnchorPane fx:controller="movielistjavafx.view.MainWindowController">
Supposons que j'ai un ordinateur central et son contrôleur. Le mainframe.fxml est chargé dans la méthode start(Stage)
-.
Maintenant, vous souhaitez montrer un filechooser qui est attaché à une étape/fenêtre/peu importe.
Pour cela, il serait bon de laisser le contrôleur FXML savoir sur le par exempleprimaryStage
.
Y a-t-il un moyen de l'injecter au contrôleur ou la FXML sait-elle au moment de l'exécution à quelle scène et quelle étape appartient-elle?
Seule une idée que j'ai consiste à stocker des conditions principales dans un contexte statique, mais cela ne semble pas être un moyen de le faire pour moi.
Solution robuste (peut être utilisée comme un extrait): prenez un événement puis obtenir le contrôle qui a tiré cet événement. Utilisez ce contrôle pour obtenir la scène:
@FXML
private void browseDirectory(ActionEvent event) {
Stage stage = Stage.class.cast(Control.class.cast(event.getSource()).getScene().getWindow());
DirectoryChooser directoryChooser = new DirectoryChooser();
File selectedDirectory = directoryChooser.showDialog(stage);
System.out.println(selectedDirectory.getAbsolutePath());
}