繁体   English   中英

Java 动态且干净地在多个按钮上使用事件处理程序

[英]Java use event handler on multiple buttons dynamically and in a clean way

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

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对象中,但在您的原始解决方案中也是如此。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM