package com.frameactiontest;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class FrameActionTest implements ActionListener {
/**
* @param args
*/
Frame f = new Frame();
public static void main(String[] args) {
// TODO Auto-generated method stub
FrameActionTest fat = new FrameActionTest();
fat.init(); //调用init()方法.
}
public void init(){
Button bn =new Button("Confirm"); //new Button按钮对对象.
f.add(bn);
f.setSize(800, 600);
f.setVisible(true);
bn.addActionListener(this); //曾加监听器.
}
public void actionPerformed(ActionEvent e) { //重写 ActionListener的方法.
// TODO Auto-generated method stub
f.setVisible(false);
f.dispose();
}
}
我想问的是:
类“FrameActionTest” implements(实现了) 类“ActionListener” ,这里从main函数的执行代码顺序看,
重写 类“ActionListener”的“actionPerformed(ActionEvent e)”方法,
然后我疑问的是java怎么知道 先执行main函数的“init()”方法之后才执行重写的“actionPerformed(ActionEvent e)”方法,(因为我认为“actionPerformed(ActionEvent e)”方法是在main 函数中“new FrameActionTest()”的时候就执行了)
其实也没啥,主要就是这句话的认识是错误的而已:
“因为我认为“actionPerformed(ActionEvent e)”方法是在main 函数中“new FrameActionTest()”的时候就执行了”
实际上,actionPerformed() 函数是在有事件发生时,才会被调用的。init() 则是你刚创建好FrameActionTest对象就调用了。而且这类问题,想实验下也很简单,加个断点,或者增加println来记录下运行位置。