为什么"这个"在这里使用关键字?

时间:2015-09-17 08:02:01

标签: java event-handling this

我是Java的新手。在尝试理解Java的事件处理机制时,我在网上找到了以下代码片段。此代码取自JavaTpoint.com

import java.awt.*;  
import java.awt.event.*;  

class AEvent extends Frame implements ActionListener{  
TextField tf;  
AEvent(){  

tf=new TextField();  
tf.setBounds(60,50,170,20);  

Button b=new Button("click me");  
b.setBounds(100,120,80,30);  

b.addActionListener(this);  

add(b);add(tf);  

setSize(300,300);  
setLayout(null);  
setVisible(true);  

}  

public void actionPerformed(ActionEvent e){  
tf.setText("Welcome");  
}  

public static void main(String args[]){  
new AEvent();  
}  
}

我已经研究过"这个" Java中的关键字&已经意识到它用于将当前对象作为参数传递给以下方法。

b.addActionListener(this);

但是,我不明白为什么需要将对象作为参数传递。这项计划到底完成了什么?

我很抱歉,如果这些问题已经存在,或者听起来像是一个愚蠢的问题,但我只是一个初学者。

感谢您的时间!!

5 个答案:

答案 0 :(得分:1)

实现ActionListener接口的类是'this'类。

addActionListener方法接受一个ActionListener类型的参数,因为'this'类实现了ActionListener接口,'this'这个单词可以用作参数。

编辑:它正在完成对此类中定义的actionPerformed方法的访问。

答案 1 :(得分:0)

单击按钮时,会将事件分派给您指定的ActionListener。这是AEvent创建按钮的实例。

答案 2 :(得分:0)

这里指的是AEvent类,因为它实现了 {{1}} 接口,这就是你能够将它作为参数传递的原因。所以它是AEvent的一个实例

但是,我不明白为什么需要将对象作为参数传递。这项计划到底完成了什么?

  

它的api要求你提供一个实际实现actionListener接口的对象。并且因为AEvent通过实现actionPerformed方法来实现,所以你已经通过了这个   当您单击按钮或在按钮上说出触发onclick事件时,您可以通过实现actionPerformed方法来响应它。通过进一步处理或显示任何类型的消息。

有关详细信息,请参阅here

答案 3 :(得分:0)

"这"在Java中指的是当前实例。您可以使用此代码注册按钮以收听用户操作 b.addActionListener(本);

" b"是Button的对象,"这个"是" ActionListener"的对象,在您的示例中,您可以使用" this",因为您的类正在实现接口" ActionListener"

答案 4 :(得分:0)

您的班级AEvent实施ActionListener界面,必须实施actionPerformed(ActionEvent e)方法。 所以这个类本身就是一个动作监听器。

在类的构造函数中定义了Button,它想知道如果单击它会发生什么。因此,您注册了一个“{1}}”,可以“监听”该点击。

作为监听器,您注册ActionListener,因为this是有效的监听器。 因此,如果单击该按钮,它将搜索添加的侦听器并调用this方法。而这种方法碰巧属于同一类。

这样做是为了避免产生许多监听器类。 但是您也可以定义一个实现接口的新类,并将新类的实例注册为侦听器。