情况如下:
我的理解是,在为方法提供参数时(在本例中,它将是“addActionListener”方法,来自“AbstractButton”类),所提供的对象需要是所需类型的(即: “ActionListener”用于“addActionListener”)或实现所需类型的类的类(即:实现“ActionListener”接口的类)。
另外,根据我的理解,“this”指的是当前正在调用其方法的类实例,否则指的是包含类。
现在这里有一些简单的代码:
public class Window extends JFrame implements ActionListener {
public Window () {
...
private JRadioButton btn = new JRadioButton("Option");
btn.addActionListener(this);
}
public actionPerformed ( ActionEvent e ) {
...
...
}
}
所以这是我的问题:这段代码按原样运行:“this”关键字指的是被调用方法的对象的实例(“btn”),该按钮充当自己的监听器(这是什么意思),并且单击按钮时,按预期调用actionPerformed方法。但是,由于以下原因,我不明白为什么会这样:
有人可以澄清addActionListener接受这个参数的事实,这对我来说似乎是错误的类型吗?
注意:我知道此示例中的Window类确实实现了ActionListener,但我没有看到它如何与btn变量的类型和addActionListener请求的类型进行交互。
谢谢你的时间, 杰
答案 0 :(得分:1)
“this”关键字指的是调用其方法的对象的实例(“btn”)
此处的this
个实例是指您的班级Window
和不是 JRadioButton
的实例。
由于类Window
实现了ActionListener
,因此actionPerformed
的实现可以作为JRadioButton
组件的具体实现,提供两个类之间的交互。