我看到很多object.addActionListen(this),它的含义是什么?

时间:2015-05-31 05:50:11

标签: 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? / p>

1 个答案:

答案 0 :(得分:1)

不知道你的课程是什么,但这应该澄清混乱

  1. 如果IntField或其任何超类声明了addActionListener(ActionListener al)方法,那么您需要将其传递给“ActionListener”。
  2. ActionListenerinterface,因此前一点中的“ActionListener”是它或其任何超类实现ActionListener接口的任何类或其任何子接口
  3. 如果“ActionListener”的类与调用addActionListener的类相同,则this关键字引用该类的当前实例。
  4. 在以下示例中,MyClass是“ActionListener”:

    • 类直接实现接口

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

      class MyClass implements SubActionListener
      interface SubActionListener extends ActionListener
      
    • Class是直接实现接口

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

      的类的子类
      class MyClass extends SuperMyClass
      class SuperMyClass implements SubActionListener
      interface SubActionListener extends ActionListener
      

    在这些示例中,SuperMyClassMyClass的直接超类,但它可以位于继承层次结构的任何位置。接口也一样。

    还有一些冗余实现,例如

    class MyClass extends SuperMyClass implements ActionListener
    class SuperMyClass implements ActionListener
    

    或其他奇怪的组合。

      

    TemperatureConverterActionListener

    的子类

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