我正在尝试像我提供的示例一样创建一个启动画面。
似乎AnchorPane不允许透明背景,我尝试将AnchorPane
的css设置为-fx-background-color: rgba(255,0,255,0.1) ;
,但白色背景仍显示。
我在fxml文件中的所有内容都是带有ImageView的AnchorPane,其中包含png图像
我到处寻找但找不到任何解决方案,任何帮助都将不胜感激。感谢
答案 0 :(得分:20)
尝试为Stackoverflow问题创建此JavaFX splash sample:Designing a splash screen (java)。还有follow up sample,它还提供应用程序初始化进度反馈。
JavaFX确实提供Preloader界面,以便从启动到应用程序顺利转移,但上述示例并未使用它。
上面的启动示例也没有做透明效果,但是这个dialog sample会向您展示如何执行此操作,您可以将它与之前的启动示例结合使用,以获得您想要的效果。
透明效果由:
创建stage.initStyle(StageStyle.TRANSPARENT)
。scene.setFill(Color.TRANSPARENT)
。谢尔文的样本中都证明了这一点。
相关问题:
根据其他问题更新2016年4月
预加载器图像不在前景中。我已经尝试过stage.toFront(),但没有帮助。
在Java 8u20 stage.setAlwaysOnTop(true)中创建了一个新的API。我更新了linked sample以在初始启动画面上使用它,这有助于更顺利地过渡到主屏幕。
对于Java8 +
对于modena.css(Java 8中的默认JavaFX外观定义),为所有控件(以及加载控件时的窗格)引入了轻微的阴影背景。
您可以通过指定默认背景是透明的来删除它。这可以通过在应用程序的CSS文件中添加以下行来完成:
.root { -fx-background-color: transparent; }
如果您愿意,可以使用CSS样式类和规则或setStyle调用(如Sergey的回答中所示),以确保该设置仅适用于启动画面的根,而不是所有应用屏幕。
见相关:
答案 1 :(得分:13)
您需要具有透明的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();
}