2015-09-15 39 views
-1

我有一個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. 

它是什麼我想才達到任何爲例?

+0

請出示一個SSCCE演示你想要嘗試,你怎麼被卡住。 – kleopatra

+0

我想要像最後一行那樣做。如果我點擊btn1,我保持點擊,然後我釋放點擊btn2,我希望這兩個按鈕都可以執行一個動作,btn1會在鼠標點擊時觸發。我如何讓btn2「捕捉」事件並做一些事情?我試過btn2.onMouseReleased(),但它隻影響btn1 – Benoit

回答

相關問題