gpt4 book ai didi

java - addActionListener 和 "this"

转载 作者:太空宇宙 更新时间:2023-11-04 07:56:53 29 4
gpt4 key购买 nike

情况是这样的:

我的理解是,当向方法提供参数时(在本例中,它将是来自“AbstractButton”类的“addActionListener”方法),提供的对象必须是所需的类型(即:“addActionListener”的“ActionListener”)或实现所需类型的类的类(即:实现“ActionListener”接口(interface)的类)。

另外,根据我的理解,“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 方法。但是,我不明白为什么会出现这种情况,因为以下原因:

  1. addActionListener 请求 ActionListener 作为参数
  2. “btn”的类型为 JRadioButton
  3. JRadioButton 不是 ActionListener 类型
  4. JRadioButton 不实现 ActionListener(父类也不实现)

有人可以澄清这样一个事实:addActionListener 接受这个对我来说似乎是错误类型的参数吗?

注意:我知道此示例中的 Window 类确实实现了 ActionListener,但我不知道它如何与 btn 变量的类型和 addActionListener 请求的类型交互。

感谢您的宝贵时间,周杰伦

最佳答案

the "this" keyword refers to the instance of the object whose method is being called ( "btn" )

此处的 this 实例指的是 Window 类的实例,而不是 JRadioButton 的实例。

由于 Window 类实现了 ActionListener,因此它的 actionPerformed 实现可以作为 JRadioButton 组件的具体实现,提供两个类之间的交互。

关于java - addActionListener 和 "this",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13484094/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com