我有大约10个将要发送到相同方法的按钮。我想要方法来识别来源。因此,该方法知道按钮“完成”已引发此功能。然后,我可以添加一个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());
}
输出为 Action 1: Done
通常,我更喜欢为每个按钮使用不同的方法。依靠按钮上的文本通常是一个非常糟糕的主意(例如,如果您要国际化您的应用程序,逻辑将会发生什么?)。
如果您真的想在按钮中获取文字(再次强调一下,我确实不想这样做),请使用向下转换:
String text = ((Button)e.getSource()).getText();
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句