import java.awt.*;
import java.awt.event.*;public class TFMath {
public static void main(String[] args) {
TFFrame tf1=new TFFrame();
tf1.launchFrame();
}
}class TFFrame extends Frame {
TextField num1, num2, num3;
public void launchFrame() {
num1 = new TextField(10);
num2 = new TextField(10);
num3 = new TextField(15);
Label lblPlus = new Label("+");
Button btnEqual = new Button("=");
btnEqual.addActionListener(new MyMonitor(this));
setLayout(new FlowLayout());
add(num1);
add(lblPlus);
add(num2);
add(btnEqual);
add(num3);
pack();
setVisible(true);
}
}
 class MyMonitor implements ActionListener {
TFFrame tf = null;

public MyMonitor(TFFrame tf) {
this.tf = tf;
}

public void actionPerformed(ActionEvent e) {
int n1 = Integer.parseInt(tf.num1.getText());
int n2 = Integer.parseInt(tf.num2.getText());
tf.num3.setText("" + (n1+n2));

}
}百思不得其解btnEqual.addActionListener(new MyMonitor(this));这句中this的用法,我知道this指的是当前类本身对象,可是此this指的是那个对象呢?
还有这种用法何时用到呢?为什么这么用,期待达人们指点一二。

解决方案 »

  1.   

    可否理解为将TFFrame类的引用传给MyMonitor中的tf对象?
      

  2.   

    从this开始,往外找到一个最近的类,即为此this代表的实例的类型.对于内部类,匿名类,需要注意
    对于一般的类,就更容易理解了如果是 A.this这种写法,则代表了A类的当前实例的引用。这个A可以是当前代码所在的类,或其外部类
      

  3.   

      public static void main(String[] args) {
            TFFrame tf1=new TFFrame(); --->this is this
            tf1.launchFrame();
        }tf1.launchFrame(); ---->>
    {
     btnEqual.addActionListener(new MyMonitor(this));
    }new MyMonitor--->>
    public MyMonitor(TFFrame tf) {
            this.tf = tf;
        }
      

  4.   

    btnEqual.addActionListener(new MyMonitor(this));
    这里面的this就是指TFFrame这个类,你在MyMonitor构造时传入的引用就是TFFrame
      

  5.   


    若写成这样会报错的btnEqual.addActionListener(new MyMonitor(tf1));