我有一個List按鈕。我需要能夠點擊一個然後做一個動作一個它,但也點擊一個,保持點擊然後拖動鼠標到另一個然後釋放點擊第二個,並且都需要做一個動作。在mousePressed後獲取JavaFX中的其他節點
在Javadoc,據說:
所有後續鼠標事件被傳遞到同一個節點,直到鬆開按鈕。 https://docs.oracle.com/javafx/2/api/javafx/scene/input/MouseEvent.html
它被提到,我需要激活按下拖動釋放。
我讀過,我需要調用DRAG_DETECTED事件處理程序內的startFullDrag()。
全壓拖拽釋放手勢可以通過調用startFullDrag()一DRAG_DETECTED事件處理程序內(一個節點或場景上)啓動。 https://docs.oracle.com/javafx/2/api/javafx/scene/input/MouseDragEvent.html
這裏是我的代碼:
// I create a list of buttons
// I add the EventHandler
private void setButtonNumbers(String number) {
for (char ch : number.toCharArray()) {
Button btn = new Button(ch + "");
btn.getStyleClass().add("btnNumber");
btn.setOnMouseClicked(clickOnNumber(btn));
this.numbers.add(btn);
}
}
private EventHandler<MouseEvent> clickOnNumber(Button btn) {
EventHandler<MouseEvent> event;
event = (MouseEvent t) -> {
btn.setStyle("-fx-background-color: #" + getAColor());
};
return event;
}
我需要TH startFullDrag()時btn.setOnDragEntered(),那麼當btn.setOnMousePressed()做setMouseTransparent(真),然後將其設置爲false發佈時提到:
您可以通過調用在MOUSE_PRESSED處理拖動的節點上setMouseTransparent(真),並在MOUSE_RELEASED處理程序返回回假實現這一目標。
我已經試過這一點,但我可以在得到這樣的數字如何:
btn.setOnMouseClicked(// do something);
// Get the button where the mouse has been released and do something with that button.
它是什麼我想才達到任何爲例?
請出示一個SSCCE演示你想要嘗試,你怎麼被卡住。 – kleopatra
我想要像最後一行那樣做。如果我點擊btn1,我保持點擊,然後我釋放點擊btn2,我希望這兩個按鈕都可以執行一個動作,btn1會在鼠標點擊時觸發。我如何讓btn2「捕捉」事件並做一些事情?我試過btn2.onMouseReleased(),但它隻影響btn1 – Benoit