A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 张超 中级黑马   /  2012-12-4 09:32  /  768 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

//此题位于张老师就业培训教材的296页上。
import java.awt.*;
import java.awt.event.*;
public class TestFrame implements ActionListener
{
Frame f=new Frame("IT人咨询交流网");//第一个TestFrame对象
public static void main(String[] args) {
  // TODO Auto-generated method stub
  TestFrame tf = new TestFrame();
  tf.init();
  System.out.println(tf);
}
public void init(){
  Button btn = new Button("退出");
  btn.addActionListener(new TestFrame());//张老师的原话意思要想让这个退出按钮的功能能够有效,这个地方不能够new TestFrame()只能够用this,因为第一种情况实际是产生了
//两个TestFrame 对象,桌面上产生的是第一个TestFrame对象中的f对象,而按下关闭按钮所关闭的是第二个TestFrame对象中的f对象,     但是我遇到的情况是用new TestFrame()也能
//够关闭这个窗口,
  f.add(btn);
  f.setSize(300,300);
  f.setVisible(true);
}
@Override
public void actionPerformed(ActionEvent e) {
  // TODO Auto-generated method stub
  System.out.println(this);
  f.setVisible(false);
  f.dispose();
  System.exit(0);
  [url=]/*TestFrame@e89b94[/url]
  TestFrame@52fe85
以上是打印的对象地址,第二个TestFrame对象的监听器对象居然能够控制第一个TestFrame 对象的控制按钮。
*/
}
}

评分

参与人数 1技术分 +1 收起 理由
古银平 + 1 神马都是浮云

查看全部评分

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马