JavaFX ouvrir une nouvelle fenêtre

en regardant ce code ils montrent une façon d'afficher une nouvelle fenêtre après une connexion. Lorsque le nom d'utilisateur et le mot de passe sont corrects il ouvre une nouvelle boîte de dialogue. Je veux un clic de bouton pour ouvrir une nouvelle boîte de dialogue, sans vérifier le nom d'utilisateur et le mot de passe.

27
demandé sur blo0p3r 2013-02-23 18:48:55

2 réponses

Si vous voulez juste un bouton pour ouvrir une nouvelle fenêtre, puis quelque chose comme ceci fonctionne:

btnOpenNewWindow.setOnAction(new EventHandler<ActionEvent>() {
    public void handle(ActionEvent event) {
        Parent root;
        try {
            root = FXMLLoader.load(getClass().getClassLoader().getResource("path/to/other/view.fxml"), resources);
            Stage stage = new Stage();
            stage.setTitle("My New Stage Title");
            stage.setScene(new Scene(root, 450, 450));
            stage.show();
            // Hide this current window (if this is what you want)
            ((Node)(event.getSource())).getScene().getWindow().hide();
        }
        catch (IOException e) {
            e.printStackTrace();
        }
    }
}
63
répondu blo0p3r 2016-11-09 19:57:14

j'utilise la méthode suivante dans mes applications JavaFX.

newWindowButton.setOnMouseClicked((event) -> {
    try {
        FXMLLoader fxmlLoader = new FXMLLoader();
        fxmlLoader.setLocation(getClass().getResource("NewWindow.fxml"));
        /* 
         * if "fx:controller" is not set in fxml
         * fxmlLoader.setController(NewWindowController);
         */
        Scene scene = new Scene(fxmlLoader.load(), 600, 400);
        Stage stage = new Stage();
        stage.setTitle("New Window");
        stage.setScene(scene);
        stage.show();
    } catch (IOException e) {
        Logger logger = Logger.getLogger(getClass().getName());
        logger.log(Level.SEVERE, "Failed to create new Window.", e);
    }
});
13
répondu SkidRunner 2017-03-15 19:07:30