如何设置弹出式背景透明Java Fx

如何设置弹出式背景透明Java Fx,java,javafx,gif,Java,Javafx,Gif,我正在尝试显示来自javaFx应用程序的成功消息gif public static void successGif() { int size = 400; ImageView splash = new ImageView(new Image("file:src/main/resources/img/success3.gif")); splash.setStyle("-fx-background-color: transparent;"); splash.setFi

我正在尝试显示来自javaFx应用程序的成功消息gif

public static void successGif() {
    int size = 400;
    ImageView splash = new ImageView(new Image("file:src/main/resources/img/success3.gif"));
    splash.setStyle("-fx-background-color: transparent;");
    splash.setFitWidth(size);
    splash.setFitHeight(size);
    splash.setPickOnBounds(true);
    Pane splashLayout = new Pane();
    splashLayout.getChildren().add(splash);
    final Stage initStage = new Stage();
    Scene successScene = new Scene(splashLayout, size, size);
    successScene.setFill(Color.TRANSPARENT);
    initStage.initStyle(StageStyle.TRANSPARENT);
    initStage.setWidth(size);
    initStage.setHeight(size);
    initStage.setScene(successScene);
    initStage.show();
    new Thread(() -> {
        try {
            Thread.sleep(2000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        Platform.runLater(initStage::close);

    }).start();
}
上述功能可以成功创建带有gif的弹出窗口。现在,我尝试通过应用程序中的按钮调用此函数,弹出窗口的背景仍然是白色的。但是,当我在应用程序的start()函数中调用同一个函数来测试它时,它的工作原理与预期的一样。如何解决此问题

我需要在我的应用程序中多次调用此函数

如何使背景透明

以下是gif,以防您需要尝试,谢谢


您可以使用
javafx.scene.Group
而不是直接向场景添加飞溅布局, 您可以将void方法
successGif()
更改为

public static Stage successGif() {
    int size = 600;
    ImageView splash = new ImageView(new
    Image("file:src/main/resources/img/success3.gif"));
    splash.setStyle("-fx-background-color: transparent;");
    splash.setFitWidth(size);
    splash.setFitHeight(size);
    splash.setPickOnBounds(true);
    Pane splashLayout = new Pane();
    splashLayout.getChildren().add(splash);
    final Stage initStage = new Stage();
    Group group = new Group();
    group.getChildren().add(splashLayout);
    //        group.setStyle("-fx-background-color: transparent");
    Scene successScene = new Scene(group, size, size);
    successScene.setFill(Color.TRANSPARENT);
    initStage.initStyle(StageStyle.TRANSPARENT);
    initStage.setWidth(size);
    initStage.setHeight(size);
    initStage.setScene(successScene);
    initStage.setAlwaysOnTop(true);
    initStage.show();
    return initStage;
}
然后,如果您想要Stage对象,那么您可以从方法中获取返回的对象。。