【问题标题】:Highlight Gridpane Cell on Mouseover JavaFX在鼠标悬停 JavaFX 上突出显示网格窗格单元格
【发布时间】:2017-02-16 22:08:17
【问题描述】:

好的,如上所述,我的 javafx 应用程序中有网格窗格,我正在尝试获取它,以便当我将鼠标悬停在单个单元格上时,鼠标悬停的单元格将颜色变为黄色(想想 excell 有点东西)。我不知道如何执行此操作,然后在鼠标离开单元格后将其重置。

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

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

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

【问题讨论】:

  • 为什么同一个节点上的同一个事件有两个完全矛盾的处理程序?你期望它做什么?我建议您阅读help 的一些关于提问的页面,尤其是this one" "寻求调试帮助的问题(“为什么这段代码不起作用?”)必须包含所需的行为、特定问题或错误以及在问题本身中重现它所需的最短代码。”.

标签: java user-interface javafx


【解决方案1】:

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

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

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

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

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

【讨论】:

  • 前几天我终于找到了这个答案!
  • 我现在遇到的问题是让单元格的列突出显示也改变颜色。
猜你喜欢
  • 2020-08-13
  • 1970-01-01
  • 2019-05-18
  • 1970-01-01
  • 1970-01-01
  • 2012-08-25
  • 2010-11-22
  • 2015-11-03
  • 1970-01-01
相关资源
最近更新 更多