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

标签 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.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,以防您需要尝试,谢谢。

enter image description here

最佳答案

您可以使用 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 对象,那么你可以从方法中获取返回的对象

关于java - 如何设置弹出背景透明Java Fx,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61609580/

相关文章:

javascript - 检查字符串是否在列表中(JavaScript)

java - 处理功能键中的 JavaFX 事件

java - ListView JavaFX 中的自定义项目

html - 如何在 HTML 文档中制作 GIF 动画?

linux - 如何将 gif 转换为 webm 并保留 alpha channel ?

java - 如何使用 Retrofit 传递动态 JSON 文件名

java - 在保证类型与子类相同的情况下,如何在不进行强制转换的情况下访问父类(super class)字段?

java - 具有特定数字的浮点精度

css - javafx titledborder 无法解析

Android Fresco 库gif没有动画