为什么锚窗格是透明的,而拆分窗格不是? (JavaFX的)

时间:2015-02-27 00:14:03

标签: javafx pane

我想创建一个由两个锚窗格组成的窗口。

我想为根锚窗格设置背景图像,并将第二个放在它上面。所以我希望,预览应该现在看起来:由根锚定窗格的背景图像的边缘围绕的白色空间(第二锚定窗格)作为帧。但是第二个锚窗格似乎是透明的,因为如果我进行测试,我可以看到整个背景图像。

没有设置不透明度......

(我不明白这一点,因为分割平面例如不透明......虽然我开始得到它,但这些窗格和分割窗格在某些品质方面并不相同,但我不知道为什么会这样。)

您如何看待,解决前一问题的最佳做法是什么?谢谢!

1 个答案:

答案 0 :(得分:5)

默认情况下,

Pane个子类是透明的。 Control子类由默认的CSS样式表设置样式,因此它们的背景颜色由样式决定。 SplitPane是一个控件,因此其背景颜色由default CSS stylesheet确定。这会将背景颜色设置为查找颜色-fx-background(第611行),默认为基色(#ececec)的较暗版本(26.4%强度,第102行)。

更改锚定窗格背景的最佳方法是使用外部css文件。 (这意味着您可以将应用程序的样式/外观与实际应用程序代码分开。)将id添加到锚点窗格:

AnchorPane maskingPane = new AnchorPane();
maskingPane.setId("masking-pane");

然后在外部css文件中,你可以

#masking-pane {
    -fx-background-color: white ;
}

或者,如果您想获得与拆分​​窗格相同的颜色:

#masking-pane {
    -fx-background-color: -fx-background ;
}

id应该是唯一的;如果您有多个要生成相同颜色的窗格,则可以向它们添加样式类:

AnchorPane maskingPane = new AnchorPane();
maskingPane.getStyleClass().add("masking-pane");

然后css看起来像

.masking-pane {
    -fx-background-color: white ;
}

Oracle JavaFX教程有一个section on styling the application with CSS

相关问题