首先,我是一个完整的Java NOOB。
我希望使用一个功能处理多个按钮按下,并根据单击的按钮执行某些操作。我正在使用Netbeans,我添加了一个带绑定功能的事件。默认情况下,该函数将被发送一个ActionEvent。
如何获取被单击的对象以从该函数中触发绑定函数,以便知道要执行哪些功能?
答案 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()方法,该方法将为您提供应该生成事件的对象。
话虽如此,有更好的设计,每个对象实例化自己的事件处理程序