一段动态绘图的程序MemoryUsageDemo.java如下:class DataGenerator extends Timer implements ActionListener {
/**
* Constructor.
*
* @param interval the interval (in milliseconds)
*/DataGenerator(int interval) {
super(interval, null);//调用其父类Timer构造函数 Timer(int delay,ActionListener listenr), //第二个参数为null,那么Timer每隔interval产生的ActionEvent由谁接收?
addActionListener(this);//DataGenerator注册为DataGenerator自己的ActionListener??
}
...程序跑起来证明,Timer子类DataGenerator可以接收ActionEvent,但我不明白为什么DataGenerator类要继承Timer类,而不是仅implements ActionListener又问:它与java.util.Timer最大的区别是什么?

解决方案 »

  1.   

    开头一句就能看出来是干什么的:
    class DataGenerator extends Timer implements ActionListener 
    既有Timer的功能,同时又是一个ActionListener 
    java.util.Timer不可以作为一个ActionListener 来接收事件源的事件通知,而DataGenerator可以
    DataGenerator没有提供Timer(int delay,ActionListener listenr)这个构造器,但是addActionListener(this);说明这个DataGenerator这个东西是每隔一段时间就会做一次自己所定义的actionRerformed方法,所以就是说它做的事情相比java.util.Timer更加具体和单一,所以该类的重点应该在actionPerformed方法中,正如它的名字,应该是用来生成数据的吧,但是它有两种生成数据的方式:DataGenerator.start(),另外的就是比如Button.addActionListener(new DataGenerator());也就是说你可以让他每隔一段时间来生成一次数据,也可以点一次按扭把它当一个事件来生成一次数据,这样就把Timer和要做的事情封装在了一起,重要的是你的actionPerformed方法做了些什么