在ActionListener中使用类成员

时间:2015-10-12 06:35:41

标签: java swing

我在使用计时器时遇到问题。我创造了一艘随机向上射击的船(船从左向右移动。)

实际上,它将从X轴上的随机位置开始射击。

从我的搜索中我了解到我必须在我的ActionListener课程中使用Ship并在其中我应该创建镜头。我的问题如下:

如何在`actionPerformed函数中使用Ship类成员?这样我就可以知道当时船的位置并相应地创建拍摄地点。

2 个答案:

答案 0 :(得分:0)

您可以将ActionListener设为非静态内部类。这些类可以访问外部类的成员:

public class Ship {
    private int location;

    public Ship() {
        <gui>.addActionListener(new Listener());
    }

    private class Listener implements ActionListener {
         void actionPerformed(ActionEvent e) {
             // here we can access location and other Ship members
         }
    }
}

如果您使用的是Java8,则可以删除动作侦听器类并使用方法句柄在动作事件发生时得到通知:

public class Ship {
    private int location;


    public Ship() {
        <gui>.addActionListener(this::onAction);
    }

    private void onAction(ActionEvent e) {
        ...
    }
}

答案 1 :(得分:0)

您可以执行以下操作之一:

  • 将您需要在actionListener内访问的本地变量声明为final
  • 声明您需要在actionListener内作为班级成员访问的变量。

祝你好运。