gpt4 book ai didi

Java 以一种干净的方式动态地在多个按钮上使用事件处理程序

转载 作者:行者123 更新时间:2023-11-30 07:08:08 25 4
gpt4 key购买 nike

我希望将事件处理程序添加到包含许多按钮的父级中。然后,该事件监听器分析冒泡事件,以找到我可以定位的子节点上的匹配项。换句话说,现在我这样做:

for(Object button: menuButtons) {
button.setOnAction(handler);
}

现在我已将所有按钮附加到事件处理程序,这很好,但不是我想要的。我只希望他们在父级上有一个处理程序,并使用它以某种方式触发不同的按钮。可能吗?

最佳答案

一种方法是创建您自己的 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 对象,但您的原始解决方案也是如此。

关于Java 以一种干净的方式动态地在多个按钮上使用事件处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39716378/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com