【问题标题】:How to set JavaFX default skin如何设置 JavaFX 默认皮肤
【发布时间】:2013-06-22 06:37:51
【问题描述】:

我注意到,当我在 JVM 7 和 JVM 8 上运行 JavaFX 应用程序时,我得到了不同的默认皮肤。如何在每个 JVM 上将默认皮肤设置为相同?

【问题讨论】:

    标签: javafx-2 javafx javafx-8


    【解决方案1】:

    您可以设置默认皮肤:

    @Override 
    public void start(Stage stage) throws Exception {
        ....
        setUserAgentStylesheet(STYLESHEET_CASPIAN);
        ....
    }
    

    http://fxexperience.com/2013/01/modena-new-theme-for-javafx-8/

    【讨论】:

    • 这不是 JavaFX 8 方法吗?这会在 JRE 7 上运行吗?
    • @OttPrime 不,它不会在 7 上运行,请使用 System.setProperty( "javafx.userAgentStylesheetUrl", "CASPIAN" );
    • 上述方法在将应用程序作为 jar 启动时可以工作,但由于某种原因在使用 Java Web Start 启动它时无法工作,知道为什么吗?我已经为此苦苦挣扎了一段时间,似乎找不到原因。
    【解决方案2】:

    JavaFX 2 的默认样式表是 caspian.css。您可以在 com.sun.javafx.scene.control.skin.caspian 下的 jfxrt.jar 中找到它。 JavaFX 8 改变了这种情况,我相信默认样式表名为 modena.css。为了获得通用样式表,您必须定义自己的样式表或将其中一个默认值复制到您的项目中。

    【讨论】:

      【解决方案3】:

      您也可以在命令行上使用 -Djavafx.userAgentStylesheetUrl=caspian 运行。

      【讨论】:

        【解决方案4】:

        您可以通过添加样式表来设置自己的皮肤。

        scene.getStylesheets().add(
            getClass().getResource("my-skin.css").toExternalForm());
        

        很遗憾,没有默认样式表。也许浏览 jfxrt.jar 可能会产生一些东西。

        【讨论】:

        • 我可以使用 JavaFX 中的其他皮肤吗?
        • 我不知道,但我对 JavaFX 完全没有经验。
        • @OttPrime 把它变成一个答案;我已经有足够的积分了。
        猜你喜欢
        • 2011-10-31
        • 2013-04-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-04-27
        • 2014-06-22
        相关资源
        最近更新 更多