首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Java以一种干净方式动态地使用多个按钮上的事件处理程序

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

Stack Overflow用户
提问于 2016-09-27 13:07:51
回答 1查看 704关注 0票数 1

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

代码语言:javascript
运行
复制
for(Object button: menuButtons) {
   button.setOnAction(handler);
}

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-09-27 13:15:46

一种方法是创建自己的Button类来为您应用侦听器:

代码语言:javascript
运行
复制
public class MyButton extends Button {
    public MyButton(MyHandler handler) {
        super();
        setOnAction(handler);
    }
}

然后在您的父代码中:

代码语言:javascript
运行
复制
MyHandler handler = new MyHandler(...);
MyButton menuButton1 = new MyButton(handler);
MyButton menuButton2 = new MyButton(handler);
...

我不知道为什么要这样做,因为处理程序将接收来自所有按钮的事件。你必须区分它们。

编辑:实际上,在再次阅读问题后,我不确定这是否是您所要求的。是否要将侦听器应用于父对象,并将其间接传递给按钮?我不确定这是否可能。这将取决于父对象的类型,即使父对象接收事件,它也无法知道单击了哪些按钮(除非您做了一些丑陋的事情,比如检查触摸的坐标和按钮的坐标,但我认为这不值得)。使用此解决方案,您可以将其保留在一个MyHandler对象中,但在原始解决方案中也是如此。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39716378

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档