为什么我的代码无法识别addActionListener(ActionListener e)方法?

时间:2014-01-17 00:25:24

标签: java events import awt actionlistener

我的问题

在NetBeans for Java中编译此类。我试图简单地向每个JPanel添加一个ActionListener。但是,当我输入代码时:

 `addActionListener(new SquareMouseListener);`

我收到错误:

Cannot Find Symbol;
    method addActionListener(MinePanel.SquareMouseListener)
    location: class MinePanel

以下是完整代码:

import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.*;
import javax.swing.JPanel;

public class MinePanel extends JPanel{
final private int xPos, yPos;
final private int numXPanels, numYPanels;
final private boolean isBomb;

private MineFrame holderFrame;
private boolean seen;

public MinePanel(int xPos, int yPos, int numXPanels, int numYPanels, MineFrame holderFrame)
{
    this.xPos = xPos;
    this.yPos = yPos;
    this.numXPanels = numXPanels;
    this.numYPanels = numYPanels;
    if(Math.random()<.1)
    {
        isBomb = true;
    }
    else isBomb = false;
    seen = false;

    this.holderFrame = holderFrame;
    addActionListener(new SquareMouseListener());

}

@Override
public void paint(Graphics g)
{
    //Color thisColor = new Color((float)Math.random(), (float)Math.random(), (float)Math.random());
    g.setColor(Color.BLACK);
    g.fillRect(0,0,getWidth(),getHeight());
    g.setColor(Color.LIGHT_GRAY);
    g.fillRect(1,1,getWidth()-2,getHeight()-2);
}


private class SquareMouseListener implements ActionListener
{
    @Override
    public void actionPerformed(ActionEvent ae)
    {
        System.out.println("Action Performed");
    }
}
}

我该怎么办? Netbeans告诉我导入:

import static com.sun.java.accessibility.util.AWTEventMonitor.addActionListener;

但是我知道这不对,因为我尝试了它并且它不起作用,因为addActionListener应该包含在java.awt.event中。*;导入上面。

提前致谢!

2 个答案:

答案 0 :(得分:2)

只需输入this.add并按ctrl + space即可。您将看到可以向JPanel添加哪种类型的侦听器。 可能你需要MouseListener。

this.addMouseListener(new YourListener());

其中YourListener实现MouseListener接口。

答案 1 :(得分:0)

我弄清楚问题是什么,我想发一个答案以防其他人在看。

尝试将 ActionListener 添加到JPanel时存在问题,这是无法完成的。 JPanel没有预定义的addActionListener()方法,因为它是一个较低级别的组件。正如@Jigar Joshi所说,JPanel没有定义Action Listener事件。

感谢大家的帮助!