//此题位于张老师就业培训教材的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 对象的控制按钮。
*/
}
}
|