更改不同控制器中节点的ID

时间:2015-02-21 15:06:56

标签: css javafx-8

我在Application class

中有这段代码
scene.getStylesheets().add(getClass().getResource(CONSTANTS.DESIGN_CSS.directory).toExternalForm());

和这个CSS文件

@CHARSET "UTF-8";

#mainList .list-cell {
    -fx-background-color: null;
    -fx-font-size: 24px;
    -fx-text-fill: linear-gradient( from 0.0% 0.0% to 0.0% 50.0%, reflect, rgba(255,0,0,0.28) 0.0, rgba(102,243,255,0.58) 50.0, rgba(179,179,179,0.45) 70.0, rgba(179,179,179,0.45) 100.0);
}
#mainList .list-cell:hover {
    -fx-text-fill:linear-gradient( from 0.0% 0.0% to 100.0% 100.0%, reflect, rgb(255,255,255) 0.0, rgb(255,255,77) 100.0);
}

#stoperButton .button { 
    -fx-background-color:  linear-gradient( from 50.0% 100.0% to 100.0% 100.0%, rgb(0,0,0) 0.0, rgb(255,255,255) 100.0);
}

#stoperButton .button:hover {
    -fx-background-color: #9ACD32;
}

在加载的第一个控制器中,我可以很容易地执行此操作并且它可以工作:

listView.setId("mainList");

但是(在不同的控制器中)让我没有错误但没有效果:

buttSTOP.setId("stoperButton");

是否与更改场景根有关?

1 个答案:

答案 0 :(得分:0)

选择器

#stoperButton .button { ... }

匹配具有样式类“button”的节点,并且是具有css id“stoperButton”的节点的后代。

我认为你想要的只是

#stoperButton {
    -fx-background-color:  linear-gradient( from 50.0% 100.0% to 100.0% 100.0%, rgb(0,0,0) 0.0, rgb(255,255,255) 100.0);
}

#stoperButton:hover {
    -fx-background-color: #9ACD32;
}