Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java SetOnMouseExit/Entered的奇怪行为_Java_Javafx_Javafx 8 - Fatal编程技术网

Java SetOnMouseExit/Entered的奇怪行为

Java SetOnMouseExit/Entered的奇怪行为,java,javafx,javafx-8,Java,Javafx,Javafx 8,我有一个由盒子组成的网格。框扩展了区域,并且只有背景和pref大小。 我把监听器放在每个盒子上,以便在鼠标移动时改变背景,问题是监听器没有停止。如果我在控制台中打印一些东西,如果我在框中移动鼠标,它会一直这样做。我首先搜索了一下,发现我可以使用setDisable和setMouseTransparent,但运气不好。Witch setDisable我不再处于永久循环中,但颜色不会改变(或者很快恢复到原始颜色,即使我没有用鼠标退出框) c.setOnMouseExited(新的EventHandl

我有一个由盒子组成的网格。框扩展了区域,并且只有背景和pref大小。 我把监听器放在每个盒子上,以便在鼠标移动时改变背景,问题是监听器没有停止。如果我在控制台中打印一些东西,如果我在框中移动鼠标,它会一直这样做。我首先搜索了一下,发现我可以使用setDisable和setMouseTransparent,但运气不好。Witch setDisable我不再处于永久循环中,但颜色不会改变(或者很快恢复到原始颜色,即使我没有用鼠标退出框)

c.setOnMouseExited(新的EventHandler(){
@凌驾
公共无效句柄(MouseeEvent事件){
c、 设置样式(“-fx背景色:暗灰色”);
c、 设置禁用(true);
event.consume();
}
});
c、 SetOnMouseCentered(新事件处理程序(){
@凌驾
公共无效句柄(MouseeEvent事件){
c、 设置样式(“-fx背景色:白色”);
系统输出打印(“测试”);
c、 设置禁用(true);
event.consume();
}
});

忘记提到它了,但是c是一个box,box类扩展了Region

我无法重现您描述的行为。然而,还有另一种方法可以满足您的需求

如果将样式类添加到框中(
c.getStyleClass().add(“box”);
或仅在
box
构造函数中添加
getStyleClass().add(“box”);
),则只需在外部CSS文件中添加以下内容:

.box {
    -fx-background-color: white ;
}
.box:hover {
    -fx-background-color: darkgrey ;
}
然后完全摆脱鼠标处理程序。

只需在处理程序中设置样式(不调用
setDisable()
event.consume()
)就可以了。你能创建一个演示问题的模型吗?
.box {
    -fx-background-color: white ;
}
.box:hover {
    -fx-background-color: darkgrey ;
}