java - 我看到很多object.addActionListen(this),它是什么意思?

标签 java this actionlistener jcomponent

例如:

import acm.gui.*;
import acm.program.*;
import java.awt.event.*;
import javax.swing.*;
import acm.graphics.*;

public class TemperatureConverter extends Program {
private IntField fahrenheitField;
public void init() {
    fahrenheitField = new IntField(32);
    fahrenheitField.addActionListener(this);
}
}

所以假设我知道TemperatureConverterActionListener 的子类,什么是 fahrenheitField.addActionListener(this);实际上是什么意思?因为我想“啊,整个屏幕现在显示了我的TemperatureConverter的一个实例”,将它传递给它的fahrenheitField有什么意义?作为ActionListener

最佳答案

不知道你的类(class)是什么,但这应该可以澄清困惑

  1. 如果 IntField 或其任何父类(super class)声明 addActionListener(ActionListener al) 方法,那么您需要向其传递“一个 ActionListener ”。
  2. ActionListener 是一个接口(interface),因此上一点中的“ActionListener”是它或其任何一个的任何类父类(super class)实现 ActionListener 接口(interface)或其任何子接口(interface)
  3. 如果“ActionListener”类与调用 addActionListener 的类相同,则 this 关键字引用当前类的实例。

在以下示例中,MyClass 是“一个 ActionListener”:

  • 类直接实现接口(interface)

    class MyClass implements ActionListener
    
  • 类直接实现子接口(interface)

    class MyClass implements SubActionListener
    interface SubActionListener extends ActionListener
    
  • 类是直接实现接口(interface)的类的子类

    class MyClass extends SuperMyClass
    class SuperMyClass implements ActionListener
    
  • 类是直接实现子接口(interface)的类的子类

    class MyClass extends SuperMyClass
    class SuperMyClass implements SubActionListener
    interface SubActionListener extends ActionListener
    

在这些示例中,SuperMyClassMyClass 的直接父类(super class),但它可以位于继承层次结构中的任何位置。界面也是如此。

还有一些冗余的实现,例如

class MyClass extends SuperMyClass implements ActionListener
class SuperMyClass implements ActionListener

或其他奇怪的组合。

TemperatureConverter is a subclass of ActionListener

语义,但类不能是接口(interface)的子类(有趣的是,相反的是,不是真的)。​​

关于java - 我看到很多object.addActionListen(this),它是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30554315/

相关文章:

java - awt.TrayIcon 是否可以区分双击托盘图标和关闭气球消息?

java - com.sun.net.httpserver 包中是否有使用 session 的类?

java - 如何在 Spring Boot 中将自定义 AbstractHealthIndicator 设置为不敏感,以便显示 for/health 端点?

java - JVM SafePointStatistics - 任何人都可以帮助解释它

javascript - 在 Javascript 中需要有关 "this"的帮助

java - GUI 中的 ActionListener。功能不起作用

java - 编译器不识别 Action 监听器类中的参数

java - 为什么在带有 Java 8 日期的 Jackson 的 ObjectMapper 中使用 dateFormat 时不从 JSON 中排除毫秒?

javascript - JavaScript 匿名函数中的 this 值

jQuery $(this) 关键字