我是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);
但是,我不明白为什么需要将对象作为参数传递。这项计划到底完成了什么?
我很抱歉,如果这些问题已经存在,或者听起来像是一个愚蠢的问题,但我只是一个初学者。
感谢您的时间!!
答案 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
方法。而这种方法碰巧属于同一类。
这样做是为了避免产生许多监听器类。 但是您也可以定义一个实现接口的新类,并将新类的实例注册为侦听器。