程序如下:
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的数量会增加?
谢谢!
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的数量会增加?
谢谢!
解决方案 »
- Exception in thread "main" java.lang.NullPointerException怎么解决啊
- 正则表达式问题,替换所有数字,为非常长的数字,超难
- 怎样把连接查询的结果集放到JTable中
- 一个小问题
- 使用IO流读取Socket服务器数据时,当数据较大(几十K字节)时为什么读不全,在线等待---谢谢
- JTextPane只能用inserComponent插入component吗,那么如何把component添加到JTextPane的后面?
- 对象的消亡?
- 菜鸟问题
- 有没有人对Java 3D有研究的?
- 我想学JAVA,它到底如何?
- 可以用java写个程序来控制局域网内电脑的下载进行限制吗?
- 百思不得其解,200分求解!解决立马结贴!!帮帮忙把高手们谢谢! 再不搞定要被炒了.
b.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
System.out.println("Click again");
}
});
每点一次就增加一个了
然後就馬上把button的actionListener改成另一個了,這個是一有人按就輸出click again的,所以從本質上講並不是真正的從第二次按開始就自動輸出click again,嘻嘻
第一次单击后有两个侦听-->只有一个侦听的方法执行A
第二次单击后有三个侦听-->只有二个侦听的方法执行AB
第三次单击后有四个侦听-->只有三个侦听的方法执行ABB