2017-10-19 36 views
-2

J'utilise Scene Builder pour créer une application JavaFX GUI. Je suis en train de mettre en œuvre quelque chose comme cela, en utilisant FXML:FXML pour ouvrir une nouvelle scène via le bouton

reportButton = new Button("Report"); 
reportButton.setOnAction(e -> ReportPage.display()); 

mais je ne peux pas comprendre comment le faire en utilisant la page de commande. Quelqu'un peut-il me dire comment je fais ça? Merci

+0

S'il vous plaît poster plus de code et le fichier FXML (s) ... Cela dépend vraiment de la façon dont vous ont mis en œuvre les différentes vues. Ont-ils une vision commune des parents? – deHaar

+0

Définissez simplement la méthode appropriée dans le contrôleur. Voir la [documentation] (https://docs.oracle.com/javase/9/docs/api/javafx/fxml/doc-files/introduction_to_fxml.html#controller_method_event_handlers). –

+0

Essayez-vous d'ouvrir une nouvelle étape? Changer la scène actuelle? Placez la vue dans un conteneur sur la scène actuelle? –

Répondre

0

Voici comment pourrait montrer une nouvelle étape. Ajoutez ce code dans votre sur la fonction d'action
(vous pouvez ajouter cette fonction avec le constructeur de la scène dans le code: Sur la propriété d'action)

@FXML 
private void reportButtonHandler(ActionEvent event) { 
    FXMLLoader fxmlLoader = new 
     FXMLLoader(getClass().getResource("pathtofxml/ReportPage.fxml")); 
    Parent root1 = (Parent) fxmlLoader.load(); 
    Stage stage = new Stage(); 
    //set what you want on your stage 
    stage.initModality(Modality.APPLICATION_MODAL); 
    stage.setTitle("Report Page"); 
    stage.setScene(new Scene(root1)); 
    stage.setResizable(false); 
    stage.show(); 
} 
+0

Merci beaucoup, ça marche – ToniT