默认的JavaFX-CSS

21
有没有办法查看JavaFX元素应用的CSS规则?或者是否有已发布的参考资料可用于默认的CSS规则?
例如,我想知道工具栏边框的颜色。

1
重新思考你的问题,我之前错过了一个相当明显的答案:你可以使用新的Scenic View(http://fxexperience.com/scenic-view/)应用程序在运行时查看节点的属性。到目前为止,我只使用过早期的beta版本,所以我不确定它是否会正确显示所有CSS属性,但它是为此工作而设计的正确工具。 - sarcan
涉及JavaFX 2调试CSS - Uluk Biy
这个旧问题的所有答案都已经过时了。请查看我下面的回答:stackoverflow.com/a/74214984/10686802您还可以在官方存储库的皮肤目录中找到默认的CSS(Modena),其中包含所有主题:github.com/openjdk/jfx/tree/master/modules/javafx.controls/src/main/resources/com/sun/javafx/scene/control/skin(结构可能会在未来发生变化)。 - Remzi Cavdar
6个回答

23

CSS文件位于javafxrt.jar的jfxrt.jar!/com/sun/javafx/scene/control/skin/caspian/caspian.css。

不幸的是,目前还没有API可以访问元素的CSS样式,尽管这似乎正在讨论JavaFX 2.2。


3
文档已经移动到 http://docs.oracle.com/javafx/2/api/javafx/scene/doc-files/cssref.html。 - akauppi
1
现在,随着JavaFX 8的推出,CSS参考文档再次更改位置:https://docs.oracle.com/javase/8/javafx/api/javafx/scene/doc-files/cssref.html - randers
@Gundon 这是最新版本:https://gist.github.com/Remzi1993/23350e22a51d325ed00171c117fb66d4 - Remzi Cavdar
@akauppi 文档已经再次移动:https://openjfx.io/javadoc/19/javafx.graphics/javafx/scene/doc-files/cssref.html,因为 https://openjfx.io 接管了项目开发。 - Remzi Cavdar
你可以在官方仓库的skin目录中找到它,该目录包含所有主题:https://github.com/openjdk/jfx/tree/master/modules/javafx.controls/src/main/resources/com/sun/javafx/scene/control/skin (但其结构可能会在未来发生变化)。但是我下面的回答更详细:https://dev59.com/Smct5IYBdhLWcg3wpfFc#74214984 - Remzi Cavdar
显示剩余2条评论

15

这已经过时了,因为Modena已成为默认皮肤,请参见我下面的答案。 - Remzi Cavdar

15

Modena主题

JavaFX 8默认使用一个名为Modena的新主题。查看带有截图的公告

OpenJFX的GitHub网站上可以查看最新版本。

针对构建版本Java8_91,modena.css文件可以在此处找到:

https://gist.github.com/maxd/63691840fc372f22f470

如果您想在不同的JDK版本中搜索css文件,则可以采用以下方法:

JDK 10.0以下:$JAVA_HOME/jre/lib/ext/jfxrt.jar --> com/sun/javafx/scene/control/skin/modena.

JDK 10.0及以上版本:$JAVA_HOME/jmods/javafx.controls.jmod --> classes/com/sun/javafx/scene/control/skin/modena.


谢谢。我不得不在javafx.controls.jmod上使用jmod extract才能看到文件。 - Eric Duminil
你可以在官方repo中的皮肤目录下找到它,那里存放着所有的主题:https://github.com/openjdk/jfx/tree/master/modules/javafx.controls/src/main/resources/com/sun/javafx/scene/control/skin(结构可能会在未来发生改变)。但是我的下面的回答更加详细:https://dev59.com/Smct5IYBdhLWcg3wpfFc#74214984。 - Remzi Cavdar

4

来自使用CSS对JavaFX应用进行皮肤切换:默认样式表,

JavaFX应用的默认样式表是caspian.css,位于JavaFX运行时JAR文件jfxrt.jar中。

并且

使用以下命令从JAR文件中提取样式表:

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

然后只需使用CSS查看器。


这已经过时了,因为Modena已成为默认皮肤,请参见我下面的答案。 - Remzi Cavdar

3

1
非常好的回答,包含现代信息。大多数其他现有的答案,即使是得到高票的答案,也包含已过时的信息,这些信息对于现代JavaFX实现来说现在是误导性的。 - jewelsea
1
@jewelsea 确实!我也在下面发布了我的答案。希望我们能通过提供最新的答案来帮助其他人。 - Remzi Cavdar

1

Modena

Modena已成为JavaFX应用程序的默认皮肤。

默认Maven目录

在Windows上,%HOMEPATH%是:C:\Users\USERNAME

默认的maven目录是%HOMEPATH%\.m2\repository,而JavaFX可以在%HOMEPATH%\.m2\repository\org\openjfx下找到。

modena.css

自从JavaFX(OpenJFX)变成模块化后,目录和文件结构发生了变化。最新的JavaFX版本(截至本文写作时为19)将CSS放置在%HOMEPATH%\.m2\repository\org\openjfx\javafx-controls\19中,CSS文件可以在以下.jar文件中找到:javafx-controls-19-win.jar(特定于平台)。

我已经提取了整个modena文件夹,并将其放在GitHub上:https://github.com/Remzi1993/OpenJFX-modena

对于那些只对核心modena.css感兴趣的人,这里有一个公共gist:https://gist.github.com/Remzi1993/23350e22a51d325ed00171c117fb66d4

官方OpenJFX存储库

您也可以通过访问他们的GitHub存储库:https://github.com/openjdk/jfx/和特定目录:https://github.com/openjdk/jfx/tree/master/modules/javafx.controls/src/main/resources/com/sun/javafx/scene/control/skin(结构可能会在未来发生变化)。他们似乎已经正式转移到了GitHub(终于),最新的文档也移动到了他们的网站上:https://openjfx.io

OpenJFX文档(安装指南)

JavaFX CSS参考指南


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接