黑马程序员技术交流社区

标题: 学GUI 遇到的小问题 [打印本页]

作者: 肖居上    时间: 2011-11-1 20:09
标题: 学GUI 遇到的小问题
下面代码是鼠标进入按钮时记录进入次数:
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++)+"次");
                                }
                        });
                }
        }
为什么会这样?
作者: 宁超    时间: 2011-11-1 20:23
放在里面的话,每次触动鼠标进去都是1。
作者: 罗亚东    时间: 2011-11-1 21:02
你如果放到里面的话,每次触动鼠标,会打印count的值,因为是count++,所以先打印count的值,这里是1,然后再加1,然后count会被垃圾回收期回收,所以下一次还是1。这是我的理解,不知道对不对。
作者: 张邦庆    时间: 2011-11-1 21:11
你换成(++count)
作者: 史晓霞    时间: 2011-11-4 22:27
是不是不应该把int count=1;放到方法内部啊




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2