繁体   English   中英

在ActionListener中使用类成员

[英]Using class members in ActionListener

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

关键是实际上它将在X轴上的任意位置拍摄。

通过搜索,我了解到必须在Ship类中使用ActionListener并且应该在其中创建镜头。 我的问题如下:

如何在actionPerformed函数中使用Ship类成员? 这样我就可以知道当时的船只位置,并据此创建射击位置。

您可以使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) {
        ...
    }
}

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

  • 声明需要在actionListener内部访问的局部变量作为final
  • 声明需要在actionListener内部访问的actionListener作为类成员。

祝好运。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM