L'ouverture de plusieurs fenêtres avec JavaFX

Je suis en train d'ouvrir plusieurs fenêtres avec JavaFX, j'ai un eventlistener qui ouvre une nouvelle fenêtre lorsque l'on clique sur un bouton, il ressemble à ceci:

@FXML
private void joinAction() {
    Parent root;
    try {
        Stage stage = (Stage) joinButton.getScene().getWindow();
        stage.close();

        root = FXMLLoader.load(getClass().getResource("main.fxml"));
        stage = new Stage();
        stage.setTitle("TuneUs");
        stage.setScene(new Scene(root));
        stage.show();

    } catch (IOException e) {e.printStackTrace();}
}

la première fenêtre s'ouvre, et la nouvelle s'ouvre, mais mon problème est de récupérer les évènements de travailler avec mon deuxième fenêtre

dans main.fxml j'ai cette ligne:

<TextField id="chat_bar" onAction="#sendChat" layoutX="14.0" layoutY="106.0" prefHeight="22.0" prefWidth="403.0"/>

Puis, dans ma classe de contrôleur, j'ai cette méthode:

@FXML
private void sendChat() {
    System.out.println("test");
}

mais l'Ide est de me dire que; pas de contrôleur spécifié pour l'élément de niveau supérieur

Donc, ma question est: Dois-je créer plusieurs classes de contrôleur ou puis-je utiliser un seul pour plusieurs windows si oui, comment?

  • Créer un contrôleur de classe pour chaque fichier FXML (indépendamment de la façon dont beaucoup de fenêtres/les étapes que vous avez).
  • Vous pouvez dire à l'FXMLLoader avec setController où est le contrôleur qui contient les méthodes de gestionnaire d'événement. Si le chargeur de voir, par exemple, un onAction="#sendChat" il va chercher dans l'objet de contrôleur pour une méthode sendChat qui est annoté avec @FXML.
  • Donc, si j'ai beaucoup de FXML fichiers que je vais avoir une tonne de fichiers pour mon contrôleurs
  • Oui: je n'ai jamais trouvé que, pour être un problème. @Vertex fournit un mécanisme différent qui pourrait être utilisé mais seulement dans des cas très simples (pas injecté des champs, pas de initialize() méthode). J'ai ajouté une réponse.
InformationsquelleAutor Serial | 2014-08-26