java - 如何在 JavaFX 中创建具有透明背景的启动画面

标签 java transparency javafx-2 javafx splash-screen

我正在尝试创建一个启动屏幕,就像我提供的示例一样。 似乎 AnchorPane 不允许透明背景,我尝试将 AnchorPane 的 css 设置为 -fx-background-color: rgba(255,0,255,0.1) ; 但白色背景仍然出现。

我的 fxml 文件中只有一个带有 ImageView 的 AnchorPane,其中包含 png 图像

Example

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

最佳答案

试试这个JavaFX splash sample为 Stackoverflow 问题创建:Designing a splash screen (java) .还有一个 follow up sample它还提供应用程序初始化进度反馈。

JavaFX 确实提供了 Preloader从splash到application的平滑传输接口(interface),但是上面的示例没有使用它。

上面的splash示例也没有做透明效果,但是这个dialog sample向您展示如何做到这一点,您可以将其与之前的启动示例结合起来以获得您想要的效果。

透明效果的创建者:

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

这些都在 Sergey 的示例中得到了证明。

相关问题:

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

the preloader image isnt in the foreground. I have tried stage.toFront(), but doesnt help.

在 Java 8u20 中创建了一个新 API stage.setAlwaysOnTop(true) .我更新了linked sample在初始启动屏幕上使用它,这有助于更平滑地过渡到主屏幕。

对于 Java8+

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

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

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

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

查看相关:

关于java - 如何在 JavaFX 中创建具有透明背景的启动画面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14972199/

相关文章:

java - 创建目录 Oracle/JDBC 失败

javascript - Phaser、Tileset 和 Tilemap 透明度

jQuery 背景 Canvas 透明度

Java FX 如何在 ListView 中更改项目的样式

java - 在 JavaFX Controller 中获取被单击对象的 ID 的更好方法

java - Grails Mail 插件异常处理

java - 当开发模式为 true 时,提交表单后服务器控制台中的参数拦截器错误

java - Java中使用Zxing读取QRCode

c# - Gtk# 使 EventBox 透明的示例

java - JFxtas Lcd 仪表最大值