站内搜索: 请输入搜索关键词

当前页面: 开发资料首页J2SE 专题请教大家一个匿名内部类的程序!

请教大家一个匿名内部类的程序!

摘要: 请教大家一个匿名内部类的程序!


程序如下:
import java.awt.*;
import java.awt.event.*;

public class ActionTest extends Frame{
public ActionTest(){
Button test=new Button("Test");
add(test);
test.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
System.out.println("Click");
Button b=(Button)e.getSource();
b.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
System.out.println("Click again");
}
});
}
});
setSize(100,100);
setVisible(true);
setTitle("My Frame");
}

public static void main(String[] argus){
ActionTest frame=new ActionTest();

}
}
/*结果是点击按钮第一次,显示:
Click
点击按钮第二次,显示:
Click
Click again
点击按钮第三次,显示:
Click
Click again
Click again
点击按钮第4次
…… */
问题:这个程序的匿名内部类的事件是如何执行的啊,为什么随着点击次数的增加Click again的数量会增加?
谢谢!


因为每次执行一次单击它都增加一个事件对像(里边的)啊.
b.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
System.out.println("Click again");
}
});
每点一次就增加一个了


同意楼上


第一次輸出了Click
然後就馬上把button的actionListener改成另一個了,這個是一有人按就輸出click again的,所以從本質上講並不是真正的從第二次按開始就自動輸出click again,嘻嘻

第一单击时候应该是里边增加的那个侦听没有截取到这次的单击事件,如果类推下去
第一次单击后有两个侦听只有一个侦听的方法执行A
第二次单击后有三个侦听只有二个侦听的方法执行AB
第三次单击后有四个侦听只有三个侦听的方法执行ABB


↑返回目录
前一篇: onchange 问题
后一篇: 作了个定时器,怎么让他到时间了发声音出来啊