如何将addActionListener继承到自定义对象?

时间:2014-03-23 22:04:20

标签: java swing

我有两个类,一个是JPanel的实例(称为xContain),另一个是不扩展任何东西(称为xShape)。有太多的代码要粘贴在这里,我不想用勺子喂,所以我要仔细解释它。

我试图在我的xShape的一个实例上调用.addActionListener()。然而,它没有工作,因为它没有这种方法。但是,当我对JButton或Timer对象的实例执行此操作时,我会发现这是因为该方法是继承自类javax.swing.AbstractButton。

我有什么要继承到我的xShape类,以便我可以添加一个动作监听器?

2 个答案:

答案 0 :(得分:1)

如果您的班级应该作为按钮或菜单工作(如提到的@HovercraftFullOfEels),那么您可以声明您的班级继承自AbstractButton

public class Test extends AbstractButton

并覆盖addActionListener方法:

@Override
public void addActionListener(ActionListener l)
{
    super.addActionListener(l);
    // ...
}

修改

您需要的输入是:

import java.awt.event.ActionListener;    
import javax.swing.AbstractButton;

答案 1 :(得分:1)

ActionListeners用于按钮和菜单类型对象。如果你的班级不是这些,那么不要试图将方形钉子推入圆孔。

相反,请考虑使用MouseListener而不是ActionListener,将MouseListener添加到显示XShape的容器中,并确保您的XShape类具有contains(Point p)方法。通过这种方式,您可以检查类型对象是否包含按钮按压点,从而做出反应。