这里我有一个生成舞台的方法,该舞台应该是透明的,带有一堆矩形的ScrollPane。
private Stage createStage()
{
Stage stage = new Stage(StageStyle.TRANSPARENT);
FlowPane flw = new FlowPane();
flw.setBackground(Background.EMPTY);
Random gen = new Random(5);
for (int i = 0; i < 50; i++)
{
int size = 50 + gen.nextInt(50);
flw.getChildren().add(new Rectangle(size, size, Color.web("rgb(" + gen.nextInt(255) + "," + gen.nextInt(255) + "," + gen.nextInt(255) + ")")));
}
ScrollPane root = new ScrollPane(flw);
root.setMaxSize(500, 500);
root.setBackground(Background.EMPTY);
Scene scene = new Scene(root, Color.TRANSPARENT);
stage.setScene(scene);
return stage;
}
这是调用Stage.show()时上面代码的输出:
此阶段会弹出一个新窗口,但如您所见,背景为白色,无法透视。我有一个感觉ScrollPane或FlowPane的问题,因为只有StageStyle.TRANSPARENT
和一个Square让方块弹出而没有任何白色背景。
我做错了什么?我已经尝试过了:
Pane.setBackground(new Background(new BackgroundFill(Color.TRANSPARENT, CornerRadii.EMPTY, Insets.EMPTY)));
答案 0 :(得分:1)
由于您ScrollPane
的视口未收到透明背景
如果您应用以下css:
.scroll-pane > .viewport {
-fx-background-color: transparent;
}
在您提供的代码之上,您可以获得以下内容:
<小时/> 您需要在项目和场景中添加样式表:
E.g如果样式表在src目录中
scene.getStylesheets().add("stylesheet.css");
我更喜欢添加一个CSS目录,以便以后允许更具体的样式表:
scene.getStylesheets().add("CSS/stylesheet.css");
请不要忘记,如果您从jar中启动,则需要使用toExternalForm()
添加样式表后,您可以通过使用css实现样式来减少用于样式的一些Java代码行,这样可以使代码更易于阅读