JAVAFX:可以通过代码设置css吗?

时间:2014-04-02 16:46:12

标签: javafx

我有以下代码:

.progress-bar > .bar {
    -fx-background-color: linear-gradient(
    from 0em 0.75em to 0.75em 0px,
    repeat,
    -fx-accent 0%,
    -fx-accent 49%,
    derive(-fx-accent, 30%) 50%,
    derive(-fx-accent, 30%) 99%
);}

是否可以通过代码进行设置?如果是的话,怎么做?

我想按代码设置,因为我想解决另一个问题,click here

一个人告诉我使用lookup get selector,但它返回null。

以下代码是我做的?你能告诉我什么是错的吗?

Node bar = progress.lookup(".bar"); 

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

您可以使用查找来获取节点,然后调用setStyle()。

查找不是非常健壮,并且通常不起作用(即将返回null),直到css已应用于场景图。这通常发生在第一个渲染过程中。因此,至少,您需要在显示舞台后执行此操作。您可能会发现需要将其包装在Platform.runLater(...)中以使其正常工作。

如果您只想更改背景颜色,并且需要动态更改,请考虑使用查找颜色。

类似的东西:

css文件:

.progress-bar {
  my-bar-color: linear-gradient(
    from 0em 0.75em to 0.75em 0px,
    repeat,
    -fx-accent 0%,
    -fx-accent 49%,
    derive(-fx-accent, 30%) 50%,
    derive(-fx-accent, 30%) 99%
);}
.progress-bar > .bar {
  -fx-background-color: my-bar-color ;
}

现在用Java可以做到

String color = ... ;
progress.setStyle("my-bar-color: "+color);

我不知道这是否适用于您的动画,但值得一试......