1
我有大約10個按鈕將被髮送到相同的方法。我希望該方法能夠識別來源。所以方法知道按鈕「完成」已經引發了這個功能。然後,我可以添加if語句的開關盒來相應地處理它們。這是我曾嘗試ActionEvent獲取按鈕的來源JavaFX
//Call:
btnDone.setOnAction(e -> test(e));
public void test(ActionEvent e) {
System.out.println("Action 1: " + e.getTarget());
System.out.println("Action 2: " + e.getSource());
System.out.println("Action 3: " + e.getEventType());
System.out.println("Action 4: " + e.getClass());
}
輸出結果:
Action 1: [email protected][styleClass=button]'Done'
Action 2: [email protected][styleClass=button]'Done'
Action 3: ACTION
Action 4: class javafx.event.ActionEvent
做的是按鈕上的文字。正如你所看到的,我可以使用e.getTarget()
和/或e.getSource()
然後我必須對它進行子串處理,所以只有「完成」出現。有沒有其他方法可以在撇號中獲取字符串,而不必使用子字符串。
更新:我試過通過按鈕,它的工作原理,但我仍然想 知道使用ActionEvent的解決方案。
//Call:
btnDone.setOnAction(e -> test(btnDone));
public void test(Button e) {
System.out.println("Action 1: " + e.getText());
}
輸出是Action 1: Done
我明白了,鑄造它的工作。謝謝,正是我在找的東西。我總是打開學習,所以你更喜歡什麼而不是這個? – CookieMonster
只需爲每個按鈕使用不同的處理程序... –
@CookieMonster:將數據附加到節點的替代方法:['setUserData'](https://docs.oracle.com/javase/8/javafx/api/javafx /scene/Node.html#setUserData-java.lang.Object-)和['getProperties'](https://docs.oracle.com/javase/8/javafx/api/javafx/scene/Node.html#getProperties - ) – fabian