这儿b.addActionListener(this)就是添加的ActionListener类型的类,它内部只会调用和其有关的actionPerformed方法。

解决方案 »

  1.   

    前提:JButton知道自己如果哭得话,会挨揍,被ActionListener揍。JButton.addActionListener添加的不是函数体,而是一个实例的引用,是告诉JButton:我(this)拥有ActionListener这个身份,你要敢哭就等着瞧!但是JButton并不知道,this(也就是JFrame1)还有别的功能,吃饭、睡觉等等等等。
      

  2.   

    同意楼上
    另外需要说明:b.addActionListener(new JFrame1())与b.addActionListener(this) 的效果是不一样的,如果你改成b.addActionListener(new JFrame1())的话将是一个无限循环,将内存溢出。
      

  3.   

    但在按钮b增加监听机制,也就是b.addActionListener(new JFrame1())的时候,怎么其它的函数体没有增加进去?????
    ------------------------------------------------------------------------------------------
    public void actionPerformed(ActionEvent e){
           JFrame newf=new JFrame();//产生一个没有标题的JFrame
           newf.setSize(200,200);
           newf.show();
        }
    因为你在actionPerformed()这个方法里只做了这一点事情,其他的事情你没有指定,怎么会去做呢?
      

  4.   

    回复人: bonwei(阿邦) ( ) 信誉:100 
    同意楼上
    另外需要说明:b.addActionListener(new JFrame1())与b.addActionListener(this) 的效果是不一样的,如果你改成b.addActionListener(new JFrame1())的话将是一个无限循环,将内存溢出。-----------------------------------------------------------------
    我测试了一下,确实是这样,那是为什么?
    this具体代表的是什么呢?
      

  5.   

    因为你的b.addActionListener是写在JFrame1的构造函数里的,
    b.addActionListener(new JFrame1())的时候,又调起了JFrame1的构造函数
    一个递归,而且没有出口。this是说,当前的这个JFrame1实例
    new JFrame1()是创建新的JFrame1实例
      

  6.   

    hehe,提问题是好事,有谁会说你,但你老兄好像还是没学会怎么写问题的标题.
     flyforlove(为情飞) 是对的