我有大约 10 个按钮将被发送到相同的方法。我想要识别来源的方法。所以该方法知道按钮“完成”已经唤起了这个功能。然后我可以添加 if 语句的 switch case 来相应地处理它们。这是我尝试过的
//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());
}
Run Code Online (Sandbox Code Playgroud)
输出结果:
Action 1: Button@27099741[styleClass=button]'Done'
Action 2: Button@27099741[styleClass=button]'Done'
Action 3: ACTION
Action 4: class javafx.event.ActionEvent
Run Code Online (Sandbox Code Playgroud)
完成是按钮上的文本。正如您所看到的,我可以使用 e.getTarget()和/或e.getSource()然后我必须对其进行子字符串化,因此只出现“完成”。有没有其他方法可以在撇号中获取字符串而不必使用子字符串。
更新:我尝试过传递 Button 并且它有效,但我仍然想知道使用 ActionEvent 的解决方案。
//Call:
btnDone.setOnAction(e -> test(btnDone));
public void test(Button e) {
System.out.println("Action 1: " + e.getText());
}
Run Code Online (Sandbox Code Playgroud)
输出是 Action 1: …