繁体   English   中英

具有透明ScrollPane的透明舞台不是透明的

[英]Transparent Stage with transparent ScrollPane is not transparent

在这里,我有一个生成舞台的方法,该舞台应该与一堆矩形的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)));

这是由于ScrollPane的视口未接收到透明背景

如果应用以下css:

.scroll-pane > .viewport {
   -fx-background-color: transparent;
}

在您提供的代码之上,您将获得以下内容:

在此处输入图片说明


您将需要在项目和场景中添加样式表:

例如,如果样式表位于src目录中

scene.getStylesheets().add("CSS/stylesheet.css");

我更喜欢添加一个CSS目录,以便以后可以使用更多特定的样式表:

 scene.getStylesheets().add("CSS/stylesheet.css"); 

不要忘记,如果从jar启动,则需要使用toExternalForm()

添加样式表后,您可以通过使用CSS来实现,从而减少用于样式设计的某些Java代码行,这应使您的代码更易于阅读

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM