JavaFX 2.2 fenêtre Modale de dialogue ** FXML
Je suis en train d'utiliser l'exemple fourni par @jewelsea à ce gist et je suis bloqué parce que je suis en utilisant le FXML.
J'ai vu deux de ces postes: Comment créer une fenêtre modale en JavaFX 2.1 et cette réponse à JavaFX 2 fenêtre modale.
Où je suis coincé est dans le code par jewelsea, où il est dit:
final WebView webView = new WebView();
webView.getEngine().load("http://docs.oracle.com/javafx/");
primaryStage.setScene(new Scene(webView));
Considérant que, depuis que je suis en utilisant le FXML, je fais ceci:
FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("MyFXML.fxml"));
Scene scene = (Scene)fxmlLoader.load();
myController = fxmlLoader.getController();
primaryStage.setScene(scene);
Pouvez-vous me dire comment modifier mon code (4 lignes au-dessus), de sorte qu'il fonctionne avec jewelsea l'exemple?
Merci!
OriginalL'auteur likethesky | 2012-09-22
Vous devez vous connecter pour publier un commentaire.
Le remplacement de code que vous utilisez via
FXMLLoader
plutôt que de laWebView
scène créée par l'exemple de code est correct, vous n'avez pas besoin de le modifier.Votre code d'affichage de la scène principale pour votre première étape sur la base d'un fxml document (pour mon exemple, j'ai été en utilisant une WebView que ma scène principale, que vous n'avez pas besoin, vous n'avez pas besoin de tout le WebView connexes code de la gist).
Ce que vous avez besoin est une certaine détente dans votre contrôleur à l'heure que vous souhaitez afficher une boîte de dialogue. Comme un exemple simple, vous pouvez installer un fxml pour votre scène principale qui comprend un bouton, puis en fournissant une ActionHandler pour le bouton de votre manette (comme dans le Introduction au FXML document).
Maintenant, au lieu de simplement faire une println lorsque le bouton est pressé comme Introduction au FXML a, appelez le
dialog.show()
méthode comme la gist a fait au moment de WebView document de charge. Ce qui devait arriver est que la boîte de dialogue qui apparaît sur le dessus de votre fxml généré scène.Vous remarquerez que le dialogue lui-même contient une Scène. Si vous voulais (et c'est en option), vous pouvez définir le contenu de la scène à l'aide de fxml. Pour ce faire, au moment de la boîte de dialogue de construction, vous avez défini un nouveau fxml et le nouveau contrôleur de la boîte de dialogue contenu et de charger le fxml créé scène de la boîte de dialogue dans la boîte de dialogue de la scène. Le code pour ce faire est à peu près identiques, code de ce que vous avez utilisé pour charger la scène principale du fxml dans le primaryStage.
Essayez les et voyez si cela fonctionne pour vous. Si vous êtes toujours bloqué, je peux sans doute créer un fxml exemple spécifique de la gist le long des lignes de cette réponse.
Également noter que le référencés gist a été écrite il y a longtemps, et il y a désormais un showAndWait méthode en JavaFX qui facilite le blocage de l'exécution de code boîte de dialogue appel et permettant ensuite de traiter le résultat de la boîte de dialogue sans l'aide de certaines gestionnaire d'événement mécanismes de la gist exemple. Des stratégies à la fois avec et sans showAndWait sont parfaitement acceptables solutions.
dialog
variable dans mon contrôleur, pour ensuite appelerdialog.showAndWait();
sur elle--dans mon gestionnaire dans le contrôleur de la manipulation de monprimaryStage
scène, créé par FXML. J'ai même essayé (sans succès) pour créer un mannequin <Scène fx:id="dialog" /> dans la scène principale, FXML fichier que j'utilise (w/correspondant@FXML Stage dialog;
déclaration dans le contrôleur). Tout autres conseils? (L'approche que j'utilise est pas pour utiliser FXML w/boîte de dialogue, juste pour ma scène principale.)J'ai regardé un peu, mais impossible de trouver des tutoriels qui traitent de la manière de faire "normal" (non-FXML) JavaFX code après la création d'un contrôleur principal à l'aide de FXML. Je ne pense pas que cette boîte de dialogue mérite un ensemble distinct fichier FXML, contrôleur, etc. (c'est juste un avertissement, en faisant certaines actions, avant de procéder à ma scène principale). Ainsi, toute aide sur comment pour obtenir une référence à mon
dialog
objet? Merci encore.Voici un lien temporaire pour un Projet NetBeans qui comprend un échantillon d'un fxml page de lancement d'un non-FXML base de dialogue.
Wow. Vaste. Merci!!!! Apprécier tous de votre aide. (Je crois qu'il y a un copier/coller de faute de frappe dans getSide--de setSide, mais ressemble beaucoup sinon.)
OriginalL'auteur jewelsea