A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 肖居上 黑马帝   /  2011-11-1 20:09  /  1726 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

下面代码是鼠标进入按钮时记录进入次数:
package awtTest;
import java.awt.*;
import java.awt.event.*;
public class ListenerTest{
        /**
         * @param args
         */
        public static void main(String[] args) {
        // TODO Auto-generated method stub
        new Frames();
        }

}
class Frames{
        private Frame f;
        private Button b;
        public Frames(){
                f=new Frame("My Frame");
                f.setBounds(333, 444, 555, 666);
                b=new Button("关闭");
                f.add(b);
                f.setLayout(new FlowLayout());
                f.setVisible(true);
                Events();
        }
        public void Events(){
                        f.addWindowListener(new WindowAdapter(){
                                public void windowClosing(WindowEvent e){
                                        System.exit(0);
                                }
                        });
                        b.addMouseListener(new MouseAdapter(){
                                int count=1;//放在这里运行正确。
                                public void mouseEntered(MouseEvent e){
                                       
                                        //当把int count=1;放到此处时,运行代码后不管鼠标进入按钮多少次都打印出:进入1次,
                                        System.out.println("进入"+(count++)+"次");
                                }
                        });
                }
        }
为什么会这样?

评分

参与人数 1技术分 +1 收起 理由
宁超 + 1 赞一个!

查看全部评分

5 个回复

倒序浏览
放在里面的话,每次触动鼠标进去都是1。
回复 使用道具 举报
你如果放到里面的话,每次触动鼠标,会打印count的值,因为是count++,所以先打印count的值,这里是1,然后再加1,然后count会被垃圾回收期回收,所以下一次还是1。这是我的理解,不知道对不对。

评分

参与人数 1技术分 +1 收起 理由
宁超 + 1 很给力!

查看全部评分

回复 使用道具 举报
你换成(++count)
回复 使用道具 举报
是不是不应该把int count=1;放到方法内部啊
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马