我在Java中创建一个ActionListener按钮,
d1.addActionListener(this);
给了我一个关于“this”的错误,但是
d1.addActionListener((ActionListener) this);
的工作原理。为什么我需要添加“(ActionListener)”?我在教程中看到第一个应该工作;为什么不适合我?
答案 0 :(得分:5)
很简单,this
不是ActionListener。您的类是否实现了ActionListener接口?编译器告诉你它没有。
即,这将起作用:
public class Foo implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
//....
}
}
但这不会
public class Bar {
}
答案 1 :(得分:3)
d1.addActionListener(this);
这意味着当前类应处理d1
组件上的任何操作事件。通过'处理'我的意思是实施 ActionListener 类。
public class YourClass implements ActionListener {
// Member variables
public YourClass() {
d1.addActionListener(this);
}
// Methods
@Override
public void actionPerformed(ActionEvent e) {
// Handle event
}
}
您可以通过创建内部单独的类来以另一种方式处理此问题:
public class YourClass implements ActionListener {
// Member variables
public YourClass() {
d1.addActionListener(new CustomActionListener());
}
// Methods
class CustomActionListener implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
// Handle event
}
}
}