是否可以将.hoverProperty()。addListener添加到HBox的所有孩子(在我的情况下按钮)?我知道我可以为每个按钮分配不同的侦听器。但是如果可以一次给所有的孩子分配一个听众,我很感兴趣。 HBox的按钮之间有15 px的间距。用JavaFX听儿童悬停
回答
只需将监听器添加到HBox中:
public class Main extends Application {
@Override
public void start(Stage primaryStage) {
Group root = new Group();
HBox hBox = new HBox();
hBox.setSpacing(30);
for (int i = 0; i < 10; i++) {
hBox.getChildren().add(new Button("Button " + i));
}
hBox.hoverProperty().addListener(new ChangeListener<Boolean>() {
@Override
public void changed(ObservableValue<? extends Boolean> observable, Boolean oldValue, Boolean newValue) {
System.out.println("Hover: " + oldValue + " -> " + newValue);
}
});
hBox.addEventFilter(MouseEvent.MOUSE_ENTERED, e -> System.out.println(e));
hBox.addEventFilter(MouseEvent.MOUSE_EXITED, e -> System.out.println(e));
hBox.addEventFilter(MouseEvent.MOUSE_MOVED, e -> {
if(e.getTarget() instanceof Button) {
System.out.println(e);
}
});
hBox.setMaxHeight(100);
root.getChildren().add(hBox);
Scene scene = new Scene(root, 800, 500);
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
按照hoverProperty文档,你可以如用一个鼠标监听器现在:
注意,目前的实现悬停的依赖于鼠标输入并退出事件以确定此节点是否处于悬停状态;此 意味着此功能目前仅在 带有鼠标的系统上受支持。未来的实现可能会提供支持悬停的替代手段。
我的不好,我没有提到在hbox中的按钮之间有间距。但即使用户悬停在空荡荡的空间,徘徊也会触发。有没有办法排除间距也被徘徊? – Alyona 2015-03-02 16:27:32
简单的解决方案就是在你面前。为每个按钮添加一个监听器。你为什么不想要那个?聆听者在进入和退出时触发。所以如果你移动按钮 - >间距 - >按钮,那么悬停在第二个按钮上永远不会触发事件。另一种方法是听取MOUSE_MOVED事件并过滤目标i。即检查它是一个按钮还是hbox。但我不知道你想达到什么目的。 – Roland 2015-03-02 16:57:37
我更新了间距的代码和鼠标移动侦听器,以防万一它帮助你。 – Roland 2015-03-02 17:03:19
- 1. :悬停=儿童表明()
- 2. 如何在儿童停止传播时聆听儿童事件
- 3. 在儿童悬停上更改父css
- 4. 的JavaScript鼠标悬停儿童冒泡
- 5. jQuery悬停窗格儿童闪烁
- 6. jQuery防止悬停儿童闪烁
- 7. 悬停事件在儿童悬停时发射两次
- 8. 悬停在儿童上与悬停在父母上不一样
- 9. Firebase多个儿童听众
- 10. 儿童停靠窗口
- 11. 悬停和JavaFX中
- 12. As3 - 儿童遗传事件监听器。如何停止?
- 13. 鼠标悬停的Mouseenter儿童闪光灯
- 14. 使父容器成为悬停的儿童容器的高度
- 15. 我可以同时激活所有儿童悬停状态吗?
- 16. 父母ul应该改变,当我悬停儿童il
- 17. 褪色悬停的孩子,然后淡出儿童模糊
- 18. CSS:悬停图像切换与儿童选择器
- 19. JQuery悬停对儿童LI元素的影响
- 20. 悬停的家长分区内的适合儿童分区
- 21. 修复与切换按钮和儿童DIV的鼠标悬停
- 22. 在儿童悬停时,为容器添加背景颜色
- 23. Qt:儿童图形项目悬停事件
- 24. IE7 /怪癖模式儿童分区悬停问题
- 25. 将鼠标悬停在父母的变化上儿童元素
- 26. jQuery,计数悬停儿童和显示结果
- 27. 鼠标悬停及移出事件对儿童
- 28. CSS儿童悬停,旋转和剪辑:饼图问题
- 29. 儿童WPF鼠标悬停触发效果控件
- 30. 没有左右儿童的JavaFX Borderpane
这不是问题的答案,而是您想在听众中做什么?如果您只是在悬停时更改按钮的样式,则可以直接使用CSS来完成此操作,而不是使用侦听器。 – 2015-03-02 17:26:18