web-dev-qa-db-fra.com

JavaFX ouvre une nouvelle fenêtre

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

34
MehmanBashirov

Si vous voulez juste qu'un bouton ouvre une nouvelle fenêtre, alors 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();
        }
    }
}
79
blo0p3r

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);
    }
});
15
SkidRunner