如何将类实现为ActionListener?

时间:2017-03-16 13:06:35

标签: java class user-interface actionlistener

正如标题所示,我希望将我的Java项目中的现有类实现为ActionListener类。为了帮助您理解我的问题,我将首先解释一下这个场景:

我被指派创建一个Graphics包;这将从 CommandPanel JTextField获取用户输入,以在满足并完成条件操作时从用户绘制指定的行。 GUI由4个类组成,其中3个为extend JPanels

我遇到的问题是尝试将指定的GraphicsPanel课程实施到我的CommandPanel ActionListener

我希望能够在满足要求时绘制一条线,以确保在我的主类中查看的相同GraphicsPanel中绘制线(此处未包含)。

语句gp按预期在public CommandPanel(GraphicsPanel gp)段中运行,但是当我尝试将gp调用到我的ActionListener以在该面板中绘制一条线时,它无法认为它是一个已有的阶级。

可以进一步澄清,以确保您了解手头的问题;任何帮助将不胜感激。 :-D

1 个答案:

答案 0 :(得分:1)

调用构造函数时,必须将gp作为实例变量存储在CommandPanel中:

private GraphicsPanel gp;
public CommandPanel(GraphicsPanel gp) {
    this.gp = gp;
}

或者,将gp传递给ActionListener并将其存储在那里的实例变量中:

public CommandPanel(GraphicsPanel gp) {
    ButtonListener listener = new ButtonListener(gp);
}

public class ButtonListener implements ActionListener {
    GraphicsPanel gp;
    public ButtonListener(GraphicsPanel gp){
        this.gp = gp;
    }
}