用于桌面应用程序的 JavaFX-8 GUI:是否有类似 Swing 的外观和感觉?

JavaFX-8 GUI for desktop apps: Are there Look & Feels like in Swing?

在 Swing 中,有一些外观和感觉作为 Java 的一部分提供,例如:

跨平台:

特定于平台:

Java8 是否像为 Swing 一样为 JavaFX 提供外观和感觉? (我不问具体的外观和感觉,我一般问是否有默认的外观和感觉)

我将通过对这个问题的回答的总结和我自己所做的一些研究来回答我自己的问题:

  • 在 JavaFX 中,不再有外观术语,但有 样式表
  • 直到 JavaFX-8(即 Java 8 版本),只提供了一个样式表,名为 Caspian
  • 从 JavaFX-8 开始,添加了另一个样式表,名为 ModenaModena 样式表 是 JavaFX-8
  • 中的默认样式表

可以使用以下命令在 ModenaCaspian 样式表之间切换:

setUserAgentStylesheet(STYLESHEET_CASPIAN); // Switches to "Caspian"
setUserAgentStylesheet(STYLESHEET_MODENA);  // Switches to "Modena"

注意:

  • setUserAgentStylesheet(String url)是class的一个方法Application
  • 常量 STYLESHEET_CASPIANSTYLESHEET_MODENAApplication
  • 的 class 个成员
  • 上面显示的代码应该在 JavaFX Application 线程上调用
  • STYLESHEET_CASPIANSTYLESHEET_MODENA 包含 url。您可以使用该方法使用您自己的样式表,将 url 传递给您的样式表

    • 例如,如果我创建了一个名为DarkTheme.css的样式表并将其放在项目目录中,在src/resources,我会用下面的代码来应用它: setUserAgentStylesheet(this.getClass().getResource("resources/DarkTheme.css").toExternalForm());

    • 如果您只想扩展当前样式表,而不是从头开始定义它,您可以改用: scene.getStylesheets().add(this.getClass().getResource("resources/DarkTheme.css").toExternalForm());