2013-07-09 209 views
9

我对ScrollPane的默认背景和边框有一些问题。 使用这种风格使问题更清晰。JavaFX ScrollPane边框和背景

setStyle("-fx-background-color:blue; -fx-border-color:crimson;"); 

Image show the background and the border

我尝试这种风格,并没有得到运气只有红色边框消失了,只剩下我与蓝色的。

setStyle("-fx-background-color:blue; -fx-background-insets:0; -fx-border-color:crimson; -fx-border-width:0; -fx-border-insets:0;"); 

Image show the background and the border after my best work around

我看着这个老后JavaFX Hide ScrollPane gray borderhttp://docs.oracle.com/javafx/2/ui_controls/editor.htm

这行代码不起作用既不

scrollPane.getStyleClass().add("noborder-scroll-pane"); 

感谢

+0

在带有新默认主题的JavaFX 8中,ScrollPane背景颜色可能很难设置。对于这些情况,请参阅http:// stackoverflow。com/questions/22952531/scrollpanes-in-javafx-8-always-have-gray-background –

回答

15

我有找到了解决方案,并希望发布它在这里让别人不必再浪费时间再找到它。

通过查看使用此命令从库中提取的JavaFx(caspian.css)的默认css。

jar xf jfxrt.jar com/sun/javafx/scene/control/skin/caspian/caspian.css 

我看得出来,我错过了一个

-fx-padding: 0; 

所以这是我使用的CSS类。

.scroll-pane { 
    -fx-background-insets: 0; 
    -fx-padding: 0; 
} 

.scroll-pane:focused { 
    -fx-background-insets: 0; 
} 

.scroll-pane .corner { 
    -fx-background-insets: 0; 
} 
1

您可以使用:

-fx-background-color: transparent; 
-fx-control-inner-background: transparent; 

如果仅设置了-fx-background-color,你会看到颜色变化仅应用于滚动窗格的内边缘,中心区域的颜色依然不改。

-fx-control-inner-background属性将更改该中心区域的颜色。

7

似乎有一个简单的解决方案,这是用“-fx背景:RGB(80,80,80);”,也就是

scrollPane.setStyle("-fx-background: rgb(80,80,80);"); 

至少这完全适用于我,而“-fx-background-color:rgb(80,80,80);”或“-fx-control-inner-background:rgb(80,80,80);”不支持javafx 8.“-fx-background-color:rgb(80,80,80);”在早期版本的javafx中有效。

19

在JavaFX 8的最新版本,你可以使用边到边样式类完全删除边框:

<ScrollPane styleClass="edge-to-edge"/> 
+2

非常好的发现。它未在[JavaFX CSS reference](https://docs.oracle.com/javase/8/javafx/api/javafx/scene/doc-files/cssref.html#scrollpane)中记录,但它是用于JavaFX 8的默认'modena.css'样式表。 – jewelsea

7

尝试使用这首

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

在设置背景颜色

+0

尽管更高级的解决方案对我来说不起作用,但是这样做了! – gbmhunter