pan516728192 2010-03-22 21:46
浏览 170
已采纳

我是初学者,希望大家帮助我,谢谢

import java.awt.*;
import java.awt.event.*;
public class TFMaths {
public static void main(String[] args){
new TT();
}
}
class TT extends Frame{
TextField n1,n2,n3;
TT(){
n1 = new TextField(10);
n2 = new TextField(10);
n3 = new TextField(15);
Label A = new Label("+");
Button B = new Button("=");
setLayout(new FlowLayout());
add(n1);
add(A);
add(n2);
add(B);
add(n3);
pack();
B.addActionListener(new Monitor(this));
setVisible(true);
}
}
class Monitor implements ActionListener{
TT tt = null;
public Monitor(TT tt){
this.tt = tt;

}
public void actionPerformed(ActionEvent e){
    int m1 = Integer.parseInt(tt.n1.getText());
    int m2 = Integer.parseInt(tt.n2.getText());
    tt.n3.setText(""+(m1+m2));
}

}
这个程序中的this怎么理解啊,它指的是什么内容,还有B.addActionListener(new Monitor(this));这个语句在内存中是怎么执行的,谁能帮忙画一下,这个小程序的内存图,谢谢

  • 写回答

2条回答 默认 最新

  • mginobili 2010-03-22 22:12
    关注

    this表示这个TT类的实例的引用

    它的类型为TT

    而你的Monitor的类的构造方法的参数为TT tt

    这样的形式表示把当前的TT实例作为参数 传递给Monitor的实例,那么在Monitor的actionPeformed方法执行时,就可以处理这个TT实例了

    而addActionListener方法继承自抽象类AbstractButton
    这个AbstractButton内部有一个Listener的容器
    protected EventListenerList listenerList = new EventListenerList();

    addActionListener方法只是把某个扩展了EventListener的监听器的实例添加到监听列表中
    当触发响应事件的时候则会回调这个EventListener(在这里是Monitor),从而进一步执行其actionPerformed方法

    这种监听器模式是awt中很普遍采用的一种设计模式

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 STM32驱动继电器
  • ¥15 Windows server update services
  • ¥15 关于#c语言#的问题:我现在在做一个墨水屏设计,2.9英寸的小屏怎么换4.2英寸大屏
  • ¥15 模糊pid与pid仿真结果几乎一样
  • ¥15 java的GUI的运用
  • ¥15 我想付费需要AKM公司DSP开发资料及相关开发。
  • ¥15 怎么配置广告联盟瀑布流
  • ¥15 Rstudio 保存代码闪退
  • ¥20 win系统的PYQT程序生成的数据如何放入云服务器阿里云window版?
  • ¥50 invest生境质量模块