[英]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.