现有
int a=100;当a的值改变时输出System.out.print(a);
如何用自定义事件去实现呢?请写下完整代码,感激不尽
baidu搜的大多都添加过东西,搞的挺乱的,还请高手写一个清晰的代码供新手学习

解决方案 »

  1.   

    并没有明白LZ的意思 不过你可以通过一个方法去修改a的值 这样就能拦截所有更新a的请求了
    或者就是不停的循环判断a的值有没有变化 不过没啥必要哦 没明白你说的自定义事件是啥意思
      

  2.   

    就是定义一个监听器,类似button被按下的那种功能,当a发生改变时触发某个方法
      

  3.   

    for exampleclass UserEvent {
        Object source;
        public UserEvent(Object source) {this.source = source;}
        public Object getSource() {return source;}
    }interface UserEventListener {
        void performUserEvent(UserEvent e);
    }class UserData {
        int a = 0;
        List<UserEventListener> envetList = new ArrayList<UserEventListener>();
        public UserData(int a) {this.a = a;}
        public int getData() {return a;}
        public boolean addUserEventListener(UserEventListener uel) {
            synchronized(eventlist) {return eventList.add(uel);}
        }
        public boolean removeUserEventListener(UserEventListener uel) {
            synchronized(eventlist) {return eventList.remove(uel);}
        }
        public void changeData(int v) {
            if (v == a) return;
            a = v;
            UserEvent event = new UserEvent(this);
            List<UserEventListener> tmpList;
            synchrozied (eventList) {
                tmpList = new ArrayList<UserEventListener>(eventList);
            }
            for (UserEventListener uel : tmpList) {
                uel.performUserEvent(event);
            }
        }
    }
    public class Test {
        public static void main(String[] args) {
            UserData ud = new UserData(100);
            ud.addUserEventListener(new UserEventListener() {
                public void performUserEvent(UserEvent e) {
                    Object obj = e.getSource();
                    if (obj instanceof UserData) {
                        System.out.println(((UserData)obj).getData());
                    }
                }
            });
            System.out.println("before data change");
            ud.changeData(200);
            System.out.println("after data change");
        }
    }
      

  4.   

    想了半天,还是不知道该如何添加到我自己的代码里
    class lsource
    {
        int a=100;
    }class LisenterThread  //这是一个处理线程,根据a的值来做不同操作
    {
        a一旦变化就触发某个方法;
    }