JavaFX - 在运行时更改CSS特定值

时间:2015-07-01 18:59:37

标签: css css3 javafx javafx-2 javafx-8

我正在使用基本css文件执行JavaFX应用程序。

我希望有一个功能,用户可以选择基色,也许使用拾色器或类似的东西,我将更改css文件以使用此作为基础计算颜色。

或者也许是一种使用变量而不是静态颜色在CSS文件中使用派生方法的自定义方法?

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

从modena.css(或旧版JavaFX-2的caspian.css)中查看JavaFX的预定义颜色。对于example。这些颜色是JavaFX大多数控件的基础,但当然只为某些控件定义了更多特定的颜色。

您可以在运行时更改它们,并应用于顶级(或任何)窗格,即场景的父根:

Color selectedColor = colorPicker.getValue();

String rgb = getRgbString( selectedColor );
myScene.getRoot().setStyle( "-fx-accent: " + rgb + "; -fx-focus-color:" + rgb );

,其中

private String getRgbString( Color color )
{
    int r = ( int ) Math.round( color.getRed() * 255.0 );
    int g = ( int ) Math.round( color.getGreen() * 255.0 );
    int b = ( int ) Math.round( color.getBlue() * 255.0 );

    return "rgb(" + r + "," + g + "," + b + ")";
}

您也可以使Color更亮,更暗和/或从中获取新颜色。请参阅api。