情况如下:
我的理解是,当为方法提供参数时(在这种情况下,它将是“ AbstractButton”类中的“ addActionListener”方法),提供的对象必须是所需的任何一种(即:“ 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要求一个ActionListener作为参数
“ btn”的类型为JRadioButton
JRadioButton的类型不是ActionListener
JRadioButton不实现ActionListener(父类也不实现)
有人可以弄清addActionListener接受此参数的事实吗?在我看来,此参数的类型错误?
注意:我知道本示例中的Window类确实实现了ActionListener,但是我看不到它如何与btn变量的类型以及addActionListener请求的类型进行交互。
谢谢你的时间,
杰伊
最佳答案
“ this”关键字是指对象的实例,该对象的方法被调用(“ btn”)
此处的this
实例是指类Window
的实例,而不是JRadioButton
的实例。
由于类Window
实现ActionListener
,因此其actionPerformed
的实现可以用作JRadioButton
组件的具体实现,以提供两个类之间的交互。