我有大约10个按钮将被发送到同一个方法中。我希望该方法能够识别其来源,以便知道是按钮“完成”调用了此函数。然后我可以添加一个switch case或if语句来相应地处理它们。这是我尝试过的:
//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: Button@27099741[styleClass=button]'Done'
Action 2: Button@27099741[styleClass=button]'Done'
Action 3: ACTION
Action 4: class javafx.event.ActionEvent
是按钮上的文本。如您所见,我可以使用e.getTarget()
和/或e.getSource()
,然后必须对其进行子字符串处理,以便只显示“完成”。是否有其他方法可以获取撇号中的字符串,而不必进行子字符串处理呢?
更新:我已尝试传递Button并且它有效,但我仍想使用ActionEvent找到解决方案。
//Call:
btnDone.setOnAction(e -> test(btnDone));
public void test(Button e) {
System.out.println("Action 1: " + e.getText());
}
输出结果为操作 1:已完成
setUserData
和getProperties
。 - fabian