为什么要在这里使用 "this" 关键字?
Why is the "this" keyword being used here?
我是 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();
}
}
我研究了 "this" 关键字在 Java 中的各种用法,并意识到它用于将当前对象作为参数传递给以下方法。
b.addActionListener(this);
但是,我不明白的是为什么需要将对象作为参数传递。程序这样做到底是为了什么?
如果这样的问题已经存在或者听起来像一个愚蠢的问题,我很抱歉,但我只是一个初学者。
感谢您的宝贵时间!!
当您的按钮被点击时,事件被分派到您指定的 ActionListener。这是创建按钮的 AEvent 实例。
实现ActionListener接口的class是'this'class。
addActionListener方法接受一个类型为ActionListener p的参数,因为'this'class实现了ActionListener接口,所以'this'这个词可以作为参数。
编辑:它正在完成对 class 中定义的 actionPerformed 方法的访问。
这里指的是 class AEvent,因为它实现了 ActionListener
接口,所以你可以将它作为参数传递。所以它是 AEvent
的一个实例
但是,我不明白的是为什么需要将对象作为参数传递。程序这样做到底是为了什么?
Its the api that want you to provide an object which actually implements actionListener interface. And because AEvent does so by implementing actionPerformed method, you have passed this.
When you click your button or lets say trigger onclick event on the button, you can respond to it by implementing actionPerformed method. Either by further processing or showing any kind of messages.`
更多详情请参考here
Java中的"this"指的是当前实例。您可以使用此代码注册按钮以收听用户操作
b.addActionListener(这个);
其中 "b" 是 Button 的对象,"this" 是 "ActionListener" 的对象,在您的示例中您可以使用 "this",因为您的 class 正在实现接口 "ActionListener"
您的 class AEvent
实现了 ActionListener
接口并且必须实现 actionPerformed(ActionEvent e)
方法。
所以 class 本身就是一个动作监听器。
在 class 的构造函数中定义了一个 Button
,它想知道如果单击它会发生什么。所以你注册了一个 ActionListener
其中 "listens" 到点击。
作为监听器,您注册 this
,因为 this
是一个有效的监听器。
因此,如果您单击该按钮,它将搜索添加的侦听器并调用 actionPerformed
方法。而那个方法恰好在同一个class中。
您这样做是为了避免吸引很多听众 class。
但是您也可以定义一个新的 class 实现接口并将新的 class 的实例注册为侦听器。
我是 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();
}
}
我研究了 "this" 关键字在 Java 中的各种用法,并意识到它用于将当前对象作为参数传递给以下方法。
b.addActionListener(this);
但是,我不明白的是为什么需要将对象作为参数传递。程序这样做到底是为了什么?
如果这样的问题已经存在或者听起来像一个愚蠢的问题,我很抱歉,但我只是一个初学者。
感谢您的宝贵时间!!
当您的按钮被点击时,事件被分派到您指定的 ActionListener。这是创建按钮的 AEvent 实例。
实现ActionListener接口的class是'this'class。
addActionListener方法接受一个类型为ActionListener p的参数,因为'this'class实现了ActionListener接口,所以'this'这个词可以作为参数。
编辑:它正在完成对 class 中定义的 actionPerformed 方法的访问。
这里指的是 class AEvent,因为它实现了 ActionListener
接口,所以你可以将它作为参数传递。所以它是 AEvent
但是,我不明白的是为什么需要将对象作为参数传递。程序这样做到底是为了什么?
Its the api that want you to provide an object which actually implements actionListener interface. And because AEvent does so by implementing actionPerformed method, you have passed this.
When you click your button or lets say trigger onclick event on the button, you can respond to it by implementing actionPerformed method. Either by further processing or showing any kind of messages.`
更多详情请参考here
"this"指的是当前实例。您可以使用此代码注册按钮以收听用户操作 b.addActionListener(这个);
其中 "b" 是 Button 的对象,"this" 是 "ActionListener" 的对象,在您的示例中您可以使用 "this",因为您的 class 正在实现接口 "ActionListener"
您的 class AEvent
实现了 ActionListener
接口并且必须实现 actionPerformed(ActionEvent e)
方法。
所以 class 本身就是一个动作监听器。
在 class 的构造函数中定义了一个 Button
,它想知道如果单击它会发生什么。所以你注册了一个 ActionListener
其中 "listens" 到点击。
作为监听器,您注册 this
,因为 this
是一个有效的监听器。
因此,如果您单击该按钮,它将搜索添加的侦听器并调用 actionPerformed
方法。而那个方法恰好在同一个class中。
您这样做是为了避免吸引很多听众 class。 但是您也可以定义一个新的 class 实现接口并将新的 class 的实例注册为侦听器。