When I upgraded by JavaFX app from JavaFX 2 to JavaFX 8, I noticed that ScrollPanes always showed up as gray rectangles, even with a background color set or the background set to be transparent.
4 Answers
I found the solution in this discussion: https://community.oracle.com/thread/3538169
First I needed this:
.scroll-pane > .viewport {
-fx-background-color: transparent;
}
Then I could set the background color to whatever I like. In this case, I'm making all ScrollPane backgrounds transparent:
.scroll-pane {
-fx-background-color: transparent;
}

- 13,499
- 16
- 80
- 133
-
1See [here](http://admedfx.blogspot.com/2014/04/fx-22-to-fx-80-part-6-scrollpane.html) for other JavaFX 2 to JavaFX 8 issues. – Jurgen Apr 16 '14 at 15:18
-
Setting the color in your first snippet above worked for me-didn't need the second – torwalker Dec 22 '15 at 12:49
Came acroos this just now, it's not working with -fx-background-color, but it is with -fx-background
.scroll-pane {
-fx-background: #FFFFFF;
-fx-border-color: #FFFFFF;
}

- 737
- 8
- 8
-
3This should be accepted as the answer, as the current accepted answer is more of a hack-around – Brandon Loehle Dec 18 '19 at 14:48
To alter borders, you would have to use "fx-background-color" . To modify the viewport's background color, you should modify the "fx-background" attribute.
I used white for both colors :
scrollPane.setStyle("-fx-background: rgb(255,255,255);\n -fx-background-color: rgb(255,255,255)");

- 41
- 2
In-source approach:
Once it's added to the scene/stage, you can trigger off the width or height property to get access to the viewport styling.
ScrollPane myPane = new ScrollPane();
myPane.widthProperty().addListener((o) -> {
Node vp = logMessagePane.lookup(".viewport");
vp.setStyle("-fx-background-color:#434547;");
});

- 11
- 4