JavaFX исчезают сцена и близко


У меня возникли трудности выяснить, если это вообще возможно. Общее поведение, которого хочет большинство людей, - это исчезновение расширения node, которое полностью возможно через FadeTransition

Однако я пытаюсь затухнуть весь этап, поэтому представьте, что вы закрываете запущенную программу и вместо того, чтобы просто убить окна (т. е. показывать -> не показывать), я хотел бы, чтобы окно (stage) исчезло в течение 2 секунд, как тост или уведомление.

1 4

1 ответ:

Создайте временную шкалу с ключевым кадром, который изменяет непрозрачность корневого узла сцены сцены. Кроме того, убедитесь, что стиль сцены и заливка сцены прозрачны. Затем завершите работу программы, как только временная шкала будет завершена.

Ниже представлено приложение с одной большой кнопкой, которая при нажатии на нее будет исчезать в течение 2 секунд, а затем программа закроется.

public class StageFadeExample extends Application {

    @Override
    public void start(Stage arg0) throws Exception {
        Stage stage = new Stage();
        stage.initStyle(StageStyle.TRANSPARENT); //Removes window decorations

        Button close = new Button("Fade away");
        close.setOnAction((actionEvent) ->  {
            Timeline timeline = new Timeline();
            KeyFrame key = new KeyFrame(Duration.millis(2000),
                           new KeyValue (stage.getScene().getRoot().opacityProperty(), 0)); 
            timeline.getKeyFrames().add(key);   
            timeline.setOnFinished((ae) -> System.exit(1)); 
            timeline.play();
        });

        Scene scene = new Scene(close, 300, 300);
        scene.setFill(Color.TRANSPARENT); //Makes scene background transparent
        stage.setScene(scene);
        stage.show();
    }

    public static void main (String[] args) {
        launch();
    }
}