我希望将事件处理程序添加到一个包含多个按钮的父级中。然后,该事件侦听器分析冒泡事件,以便在我可以作为目标的子节点上查找匹配项。换句话说,我现在这样做:
for(Object button: menuButtons) {
button.setOnAction(handler);
}
现在,我将所有的按钮都附加到了一个事件处理程序上,这很棒,但并不是我想要的。我只想让它们在父级上有一个处理程序,并使用它来以某种方式触发不同的按钮。有可能吗?
发布于 2016-09-27 13:15:46
一种方法是创建自己的Button
类来为您应用侦听器:
public class MyButton extends Button {
public MyButton(MyHandler handler) {
super();
setOnAction(handler);
}
}
然后在您的父代码中:
MyHandler handler = new MyHandler(...);
MyButton menuButton1 = new MyButton(handler);
MyButton menuButton2 = new MyButton(handler);
...
我不知道为什么要这样做,因为处理程序将接收来自所有按钮的事件。你必须区分它们。
编辑:实际上,在再次阅读问题后,我不确定这是否是您所要求的。是否要将侦听器应用于父对象,并将其间接传递给按钮?我不确定这是否可能。这将取决于父对象的类型,即使父对象接收事件,它也无法知道单击了哪些按钮(除非您做了一些丑陋的事情,比如检查触摸的坐标和按钮的坐标,但我认为这不值得)。使用此解决方案,您可以将其保留在一个MyHandler
对象中,但在原始解决方案中也是如此。
https://stackoverflow.com/questions/39716378
复制相似问题