Commutation de la scène en javaFX
J'ai un problème lorsque vous essayez de fermer la scène actuelle et d'ouvrir une autre scène quand menuItem est sélectionné. Ma scène principale est codé en tant que ci-dessous:
public void start(Stage primaryStage) throws Exception {
primaryStage.setTitle("Shop Management");
Pane myPane = (Pane)FXMLLoader.load(getClass().getResource
("createProduct.fxml"));
Scene myScene = new Scene(myPane);
primaryStage.setScene(myScene);
primaryStage.show();
}
Puis à l'intérieur de createProduct.fxml, quand menuItem est onclick, il va le faire:
public void gotoCreateCategory(ActionEvent event) throws IOException {
Stage stage = new Stage();
stage.setTitle("Shop Management");
Pane myPane = null;
myPane = FXMLLoader.load(getClass().getResource("createCategory.fxml"));
Scene scene = new Scene(myPane);
stage.setScene(scene);
stage.show();
}
Il n'est ouvert createCategory.fxml. Cependant, le panneau précédent qui est createProduct.fxml ne ferme pas. Je sais qu'il y a quelque chose qui s'appelle la scène.close() pour le faire, mais je n'ai aucune idée de la façon de mettre en œuvre car je ne passe pas de la scène à partir des principaux dès le début. Je me demande comment dois-je résoudre ce problème.
Merci d'avance.
- Êtes-vous sûr que vous avez pour ouvrir l'autre écran (createCategory.fxml) dans le nouveau stade?
- Je vais essayer de faire comme vous le savez Jframe? Le getJFrame().dispose(); eForumForgotPwd mafenêtre = new eForumForgotPwd(); myWindow.getJFrame().setVisible(true); j'ai besoin de fermer la fenêtre en cours avant d'en ouvrir un nouveau
Vous devez vous connecter pour publier un commentaire.
Vous devez faire quelques changements dans la méthode de démarrage, comme..
et votre CreateProductController.java sera,
Vous avez plusieurs façons de résoudre votre problème, peu d'entre eux je peux vous le dire. Ce que j'ai compris de votre question, c'est que vous souhaitez créer une application qui contient un système de navigation (barre de menu) sur le dessus et en l'utilisant utilisateur peut basculer à n'importe quel écran.
La méthode la plus simple est de faire votre Barre de Navigation disponible dans le monde entier, que ce soit par vous rendre statique ou en la passant à des écrans, ou par toute autre méthode. Deuxièmement, faire un seul écran (disons Frontière Volet) et de la charge sur d'autres écrans sur elle (son centre).
Vous pouvez également utiliser le printemps de l'intégration dans le projet afin qu'il vous fournir une meilleure injection de contrôleurs. Voir Réf : http://www.zenjava.com/2011/10/25/views-within-views-controllers-within-controllers/
Vous pouvez également créer votre propre unique contrôleur d'écran et de gérer d'autres écrans à l'aide que.
Voir Réf: https://blogs.oracle.com/acaicedo/entry/managing_multiple_screens_in_javafx1
Mais pour ce (ci-dessus), vous avez à changer ou mettre à jour votre architecture actuelle.
vous pouvez obtenir le courant de fenêtre ouverte/stade de la
fx:id
. assurez-vous d'avoir un élément dans votre createProduct.fxml qui afx:id
comme ci-dessousEspère vous voir le
fx:id
attribut.Ensuite dans votre contrôleur, laissez comme c'est
Puis dans votre CreateProductController.java