2

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

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

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

4

4 回答 4

7

发送事件的对象是事件源,所以 evt.getSource() 会告诉你。但是,最好为单独的事件设置单独的处理程序。

于 2009-02-01T20:51:43.860 回答
4

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

public void actionPerformed(ActionEvent e) {
    Object source = e.getSource();
    // 'source' now contains the object clicked on.
}
于 2009-02-01T20:52:28.197 回答
1

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

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

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

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

在更复杂的场景中,编写一个单独的类来扩展ActionListener并在addActionListener()上面的调用中使用它。

这并不难,易于维护和扩展,并且比单一actionPerformed的要好。

(In NetBeans, right click on the button(s), Events->Action->actionPerformed, the code is generated for you)

于 2009-02-01T21:24:40.910 回答
0

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

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

于 2009-02-01T20:52:40.303 回答