现有
int a=100;当a的值改变时输出System.out.print(a);
如何用自定义事件去实现呢?请写下完整代码,感激不尽
baidu搜的大多都添加过东西,搞的挺乱的,还请高手写一个清晰的代码供新手学习
int a=100;当a的值改变时输出System.out.print(a);
如何用自定义事件去实现呢?请写下完整代码,感激不尽
baidu搜的大多都添加过东西,搞的挺乱的,还请高手写一个清晰的代码供新手学习
或者就是不停的循环判断a的值有没有变化 不过没啥必要哦 没明白你说的自定义事件是啥意思
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");
}
}
class lsource
{
int a=100;
}class LisenterThread //这是一个处理线程,根据a的值来做不同操作
{
a一旦变化就触发某个方法;
}