我有两个类,一个是JPanel的实例(称为xContain),另一个是不扩展任何东西(称为xShape)。有太多的代码要粘贴在这里,我不想用勺子喂,所以我要仔细解释它。
我试图在我的xShape的一个实例上调用.addActionListener()。然而,它没有工作,因为它没有这种方法。但是,当我对JButton或Timer对象的实例执行此操作时,我会发现这是因为该方法是继承自类javax.swing.AbstractButton。
我有什么要继承到我的xShape类,以便我可以添加一个动作监听器?
答案 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)
方法。通过这种方式,您可以检查类型对象是否包含按钮按压点,从而做出反应。