在哪里可以找到有关 JavaFX CSS 的完整官方参考资料?

Where can I find a complete official reference on JavaFX CSS?

当我想在 JavaFX 中更改我的 TextArea 的背景颜色时(使用 CSS),很多人推荐 "-fx-control-inner-background"。但是当我查看 Oracle 的 CSS reference 时,没有 "-fx-control-inner-background" 这样的东西!事实上,在 Internet 上我找不到任何地方的参考,但 它有效

我的问题是这些人是从哪里发现这些信息的?例如,为什么 -fx-background-color 没有起作用?

我终于找到了一些有用的东西来改变我对 FXML 的理解 CSS。

根据this reference,场景图中的每个节点可以有子结构。例如,在我们的例子中,TextArea 有一个名为 content 的子结构。这是我们应该寻求改变的内容,而不是整个文本区域。在这种情况下:

.text-area .content { -fx-background-color: red; }

非常适合我。也就是说,我们在主节点(textarea)上绘制了一个region(称为content)。

这也说明了为什么许多人在尝试将文本区域的背景更改为红色时只会得到一个红色边框。这是因为窄边框是唯一在内容下方 对我们可见的部分。

希望这对您有所帮助...

请注意,-fx-control-inner-background 不是 CSS 属性,而是默认样式表中定义的 "looked-up color"(本质上是 CSS 变量) , modena.css.

据我所知,没有官方文档描述摩德纳使用的查找颜色。我知道找到这些的唯一资源是 source code,它非常仔细地记录了这些变量的目的和使用。

依赖未记录的功能时,关注向后兼容性是有效的。我将提出以下论点,在一定程度上缓解这种担忧:

  • modena.css 的设计非常清楚地表明其意图是,其中定义的查找颜色旨在成为一种轻松设置应用程序主题的机制,因此编写时就好像它们是一个 API
  • 使用这些查找颜色在 JavaFX 编程社区中得到广泛使用,在后续版本中将它们从 modena.css 中删除会破坏大量代码并遭到社区的强烈反对。因此,这些构成了 "de-facto API".
  • 来电

    setUserAgentStylesheet(Application.STYLESHEET_MODENA);
    

    Application 子类中将确保将 modena 用作默认样式表,因此如果为未来的 JavaFX 版本定义了新的默认样式表,此代码将使您的应用程序面向未来,在 "de-facto API" 上一个要点中的假设。 (请注意,这也为 JavaFX 团队提供了一种在不破坏现有代码的情况下创建新样式表的方法,我认为这加强了 "de-facto API" 论点。)

因此,总的来说,我认为依靠您可以在 modena.css 源代码中找到的查找颜色是一种安全的方法。