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