Java - 使用一个函数处理多个事件?

时间:2009-02-01 20:42:47

标签: java user-interface binding event-handling events

首先,我是一个完整的Java NOOB。

我希望使用一个功能处理多个按钮按下,并根据单击的按钮执行某些操作。我正在使用Netbeans,我添加了一个带绑定功能的事件。默认情况下,该函数将被发送一个ActionEvent。

如何获取被单击的对象以从该函数中触发绑定函数,以便知道要执行哪些功能?

4 个答案:

答案 0 :(得分:7)

发送事件的对象是事件源,因此evt.getSource()将为您提供。但是,为单独的事件设置单独的处理程序要好得多。

答案 1 :(得分:4)

调用ActionEvent的getSource()方法。例如:

public void actionPerformed(ActionEvent e) {
    Object source = e.getSource();
    // 'source' now contains the object clicked on.
}

答案 2 :(得分:1)

只有当按下所有按钮完全相同的事情时,才能使用一个功能(方法)处理多个按钮。

即使在这种情况下,也有一个私有方法,并在需要的地方从所有地方调用此私有方法。

为不同的按钮编写单独的事件处理程序并不困难。在最简单的情况下,编写匿名处理程序,如下所示:

aButton.addActionListener(new java.awt.event.ActionListener()
    {
        public void actionPerformed(ActionEvent ae)
        {
            myMethod();
        }
    });

在更复杂的情况下,请编写一个扩展ActionListener的单独类,并在上面的addActionListener()调用中使用该类。

对于所有事情来说,这并不困难,易于维护和扩展,并且比单actionPerformed更好。

(在NetBeans中,右键单击按钮,事件 - >操作 - > actionPerformed,为您生成代码)

答案 3 :(得分:0)

如果您正在使用AWT事件,那么ActionEvent支持getSource()方法,该方法将为您提供应该生成事件的对象。

话虽如此,有更好的设计,每个对象实例化自己的事件处理程序