首先,我是一个完整的Java NOOB。
我想用一个功能处理多个按钮按下,并根据单击的按钮执行某些操作。我正在使用 Netbeans,并添加了一个具有绑定功能的事件。默认情况下,该函数会发送一个 ActionEvent。
如何获取被单击的对象以从该函数中触发绑定函数,以便我知道要追求哪个功能?
首先,我是一个完整的Java NOOB。
我想用一个功能处理多个按钮按下,并根据单击的按钮执行某些操作。我正在使用 Netbeans,并添加了一个具有绑定功能的事件。默认情况下,该函数会发送一个 ActionEvent。
如何获取被单击的对象以从该函数中触发绑定函数,以便我知道要追求哪个功能?
发送事件的对象是事件源,所以 evt.getSource() 会告诉你。但是,最好为单独的事件设置单独的处理程序。
调用getSource()
ActionEvent 的方法。例如:
public void actionPerformed(ActionEvent e) {
Object source = e.getSource();
// 'source' now contains the object clicked on.
}
仅当所有这些按钮按下执行完全相同的事情时,才使用一个功能(方法)处理多个按钮按下。
即使在这种情况下,也有一个私有方法,并在任何需要的地方调用这个私有方法。
为不同的按钮编写单独的事件处理程序并不难。在最简单的情况下,编写匿名处理程序,如下所示:
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)
如果您使用 AWT 事件,则 ActionEvent 支持 getSource() 方法,该方法将为您提供应该生成事件的对象。
话虽如此,还有更好的设计,其中每个对象都实例化自己的事件处理程序