2

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

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

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

(我不明白,因为例如拆分平面不透明......虽然我开始明白了,这些窗格和拆分窗格在某些品质方面并不相同,但我不知道为什么就是这样。)

您认为,解决前一个问题的最佳做法是什么?谢谢!

4

1 回答 1

6

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

更改锚窗格背景的最佳方法是使用外部 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 教程中有一节介绍使用 CSS 设置应用程序样式

于 2015-02-27T02:34:44.657 回答