Java addActionListener错误

时间:2015-11-22 20:09:35

标签: java swing events actionlistener

我在Java中创建一个ActionListener按钮,

d1.addActionListener(this);

给了我一个关于“this”的错误,但是

d1.addActionListener((ActionListener) this);

的工作原理。为什么我需要添加“(ActionListener)”?我在教程中看到第一个应该工作;为什么不适合我?

2 个答案:

答案 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
        }
    }
}