我有一个由盒子组成的网格。 Box扩展区域,只有背景和pref大小。 我把听众放在每个盒子上以便在mouseEntered时改变背景,问题是听众不要停下来。如果我在控制台中打印一些内容,如果我在盒子内移动鼠标,它就会继续这样做。我先搜索了一下,发现我可以使用setDisable和setMouseTransparent,但没有运气。 Witch setDisable我不再处于永久循环中,但颜色不会改变(或者它快速恢复到原始颜色,即使我不退出框中也是如此小鼠)
c.setOnMouseExited(new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent event) {
c.setStyle("-fx-background-color: darkgray");
c.setDisable(true);
event.consume();
}
});
c.setOnMouseEntered(new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent event) {
c.setStyle("-fx-background-color: white");
System.out.println("test");
c.setDisable(true);
event.consume();
}
});
忘了提它,但是c是一个盒子,盒子类扩展了Region
答案 0 :(得分:1)
我无法重现您描述的行为。但是,还有另一种方法可以满足您的需求。
如果您在c.getStyleClass().add("box");
构造函数中的框(getStyleClass().add("box");
或Box
)中添加样式类,那么您只需在外部CSS文件中添加以下内容:
.box {
-fx-background-color: white ;
}
.box:hover {
-fx-background-color: darkgrey ;
}
然后完全摆脱鼠标处理程序。