首页 文章

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

提问于
浏览
0

我想创建一个窗口,它包含两个锚窗格 .

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

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

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

您怎么看?解决前一个问题的最佳做法是什么?谢谢!

1 回答

  • 4

    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

相关问题