如何在 JavaFX 中创建具有透明背景的初始屏幕
我正在尝试创建一个初始屏幕,就像我证明的示例一样。似乎AnchorPane不允许透明背景,我已经尝试将css设置为,但白色背景仍然显示出来。AnchorPane
-fx-background-color: rgba(255,0,255,0.1) ;
我在fxml文件中所拥有的只是一个带有ImageView的AnchorPane,其中包含png图像
我到处寻找,但找不到任何解决方案,任何帮助将不胜感激。谢谢
我正在尝试创建一个初始屏幕,就像我证明的示例一样。似乎AnchorPane不允许透明背景,我已经尝试将css设置为,但白色背景仍然显示出来。AnchorPane
-fx-background-color: rgba(255,0,255,0.1) ;
我在fxml文件中所拥有的只是一个带有ImageView的AnchorPane,其中包含png图像
我到处寻找,但找不到任何解决方案,任何帮助将不胜感激。谢谢
试试这个为 Stackoverflow 问题创建的 JavaFX 初始样本:设计初始屏幕 (java)。以及一个后续示例,其中还提供了应用程序初始化进度反馈。
JavaFX确实提供了预加载器接口,用于从启动到应用程序的平滑传输,但上面的示例没有使用它。
上面的启动示例也不执行透明效果,但此对话框示例演示如何执行此操作,并且可以将其与以前的启动示例结合使用以获得所需的效果。
透明效果通过以下方式创建:
stage.initStyle(StageStyle.TRANSPARENT)
.scene.setFill(Color.TRANSPARENT)
.这一切都在谢尔盖的样本中得到了证明。
相关问题:
根据其他问题更新 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 的答案所示)来确保该设置仅适用于初始屏幕的根目录,而不是所有应用屏幕。
请参阅相关内容:
你需要有透明度,为此。 本身没有颜色。Stage
Scene
Pane
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();
}