如何在JavaFX中创建具有透明背景的Splash屏幕

我正在尝试创建一个类似于我提供的示例的启动画面。 似乎AnchorPane不允许透明背景,我尝试将AnchorPane的CSS设置为-fx-background-color: rgba(255,0,255,0.1) ; 但白色背景仍然显示出来。

我在fxml文件中的所有内容都是带有ImageView的AnchorPane,其中包含png图像

例

我到处寻找,但找不到任何解决方案,任何帮助将不胜感激。 谢谢

尝试为Stackoverflow问题创建的这个JavaFX splash示例 : 设计启动画面(java) 。 以及后续示例 ,它还提供应用程序初始化进度反馈。

JavaFX确实提供了Preloader接口,可以实现从splash到应用程序的平滑传输,但上面的示例并没有使用它。

上面的启动示例也没有执行透明效果,但此对话框示例显示了如何执行此操作,您可以将其与先前的启动示例组合以获得所需的效果。

透明效果由以下因素创建:

  1. stage.initStyle(StageStyle.TRANSPARENT)
  2. scene.setFill(Color.TRANSPARENT)
  3. 确保根节点不是不透明的方形矩形。

谢尔盖的样本中都certificate了这一点。

相关问题:

  • 如何在Eclipse中使用javaFX Preloader和独立应用程序?

2016年4月更新根据其他问题

预加载器图像不在前景中。 我试过stage.toFront(),但没有帮助。

在Java 8u20 stage.setAlwaysOnTop(true)中创建了一个新的API。 我更新了链接的示例以在初始启动屏幕上使用它,这有助于更顺利地过渡到主屏幕。

对于Java8 +

对于modena.css(Java 8中的默认JavaFX外观定义),为所有控件(以及加载控件时的窗格)引入了轻微的阴影背景。

您可以通过指定默认背景是透明的来删除它。 这可以通过将以下行添加到应用程序的CSS文件中来完成:

 .root { -fx-background-color: transparent; } 

如果您愿意,可以使用CSS样式类和规则或setStyle调用(如Sergey的回答中所示),以确保该设置仅适用于启动画面的根,而不是所有应用程序屏幕。

见相关:

  • 如何在javafx中制作透明场景和舞台?

你需要有透明的StageScenePane本身没有颜色。

 public void start(Stage primaryStage) { Button btn = new Button("Say 'Hello World'"); AnchorPane root = new AnchorPane(); root.getChildren().add(btn); // Java 8: requires setting the layout pane background style to transparent // https://bugs.openjdk.java.net/browse/JDK-8092764 // "Modena uses a non-transparent background by default" root.setStyle("-fx-background-color: transparent;"); Scene scene = new Scene(root, 300, 250, Color.TRANSPARENT); primaryStage.initStyle(StageStyle.TRANSPARENT); primaryStage.setScene(scene); primaryStage.show(); }