2

我想更改 ScrollPane 的背景颜色。这是我尝试这样做的代码的一部分:

    val sp=new javafx.scene.control.ScrollPane(new Group(new Text(...)))
    sp.setPannable(true)
    sp.setStyle("-fx-background-color: blue")
    sp.setBackground(new Background(Array(new BackgroundFill(Color.DARKCYAN,new CornerRadii(0),Insets(0)))))

文本显示正常,但更改背景颜色的两次尝试均无效,使用:
Scala 版本 2.10.3 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_05)。

Scenic View 查看,发现 ScrollPane 下方的场景图中意外出现了两个 StackPane,所以层次结构是:

  1. ScrollPane //我创建的
  2. StackPane //UNEXPECTED -- 剪辑内容
  3. StackPane //UNEXPECTED -- 全尺寸内容
  4. 组//我创建的
  5. 文本//我创建的

如果我将任一 StackPane-s 的背景更改为"-fx-background-color: blue"(使用Scenic View),它会产生效果,但不会影响 ScrollPane 的样式。但是如何从代码中做到这一点?如果我做

println(sp.content())

, 它说

群@567fa81a

有没有一种简单的方法可以访问 StackPanes 或更改背景?我可以“插入”一个填充的大矩形,但这看起来很丑陋并且调整大小变得复杂,背景有什么问题?

4

2 回答 2

2

与 类似JScrollPane,JavaFX内部ScrollPane有一个StackPane容器,称为viewport. 因此,要为您ScrollPane使用此 CSS 规则设置背景(即设置红色背景颜色):

.scroll-pane .viewport {
    -fx-background-color: red;
}
于 2014-08-22T16:38:54.757 回答
1
sp.setStyle("-fx-background: blue")

代替:

sp.setStyle("-fx-background-color: blue")
于 2014-08-22T20:22:07.210 回答