关于java:JavaFX CSS:当父节点悬停在子节点上时,将悬停效果应用于子节点

JavaFX CSS : Apply hover effect to Child nodes when Parent node is hovered on

是否可以在悬停父节点时对节点的子节点应用悬停效果,而不必将每个子节点本身悬停在上面以实现其悬停效果?

例如,假设我有以下节点:

  • HBox-> #parent

    • 标签-> #label
    • 按钮-> #button

当Hbox悬停在上面时,我希望能够触发按钮和标签的悬停伪类。


JavaFX 2(使用公共API)无法执行此操作,因为它不提供对伪类的访问。即使使用JavaFX 8,我也不建议这样做,因为这会干扰JavaFX管理的伪类。

但是,您可以基于CSS样式表中基于父级的悬停状态应用CSS规则,以使它们看起来与悬停的节点相同。以下CSS假定您将hover-container样式类添加到父级:

1
2
3
4
5
6
7
8
9
/* a button in a hovered container should look the same as a hovered button */
.hover-container:hover .button {
    -fx-color: -fx-hover-base;
}

/* override above rule for armed buttons */
.hover-container:hover .button:armed {
    -fx-color: -fx-pressed-base;
}