是否可以將.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