在Mouseover JavaFX上突出显示Gridpane Cell

时间:2017-02-16 22:08:17

标签: java user-interface javafx

好吧,正如上面所说我在我的javafx应用程序中有gridpane并且我试图得到它,以便当我鼠标悬停在单个单元格上时,鼠标结束的单元格会将颜色变为黄色(想想有点好事)。我不知道怎么做,然后在鼠标离开单元格后重置它。

  officeHoursGridPane.setOnMouseEntered((MouseEvent t) -> {
        officeHoursGridPane.setStyle("-fx-background- color:#FFFF00;");
  });

  officeHoursGridPane.setOnMouseEntered((MouseEvent t) -> {
       officeHoursGridPane.setStyle("-fx-background-color:#dae7f3;");
  });

这就是我现在的方式,但它只是改变鼠标上的一种颜色,然后保持这种颜色。整个表格也不会改变每个单元格。有人帮忙吗?

1 个答案:

答案 0 :(得分:1)

如果在网格窗格上设置样式类:

officeHoursGridPane.getStyleClass().add("office-hours-pane");

然后您可以使用CSS将样式应用于网格窗格的直接子节点,并使用内置的hover伪类仅在节点悬停时应用它们。将以下内容添加到外部CSS文件中:

.office-hours-pane > *:hover {
    -fx-background-color: #FFFF00;
}

如果您更喜欢使用侦听器(这是非常棘手的,而不是很好的练习,因为您应该将样式分成单独的实体,例如CSS),那么您可以设置onMouseEnteredonMouseExited网格窗格的每个子节点上的侦听器(不在网格窗格本身上)。