请问在java中如何自定义事件,谢谢!! 比如在一个线程中接收数据,如果接收到符合的数据,将事件抛出到主程序中执行。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 这是我的一个例子,你可以看一下public class MyEvent extends EventObject { private boolean flag = false; public MyEvent(Object source,boolean check){ super(source); flag = check; } public void setFlag(boolean flag){ this.flag = flag; } public boolean getFlag(){ return this.flag; }} //自定义的事件监听器public interface MyEventListener extends EventListener{ public void Succeed(MyEvent event);}//在定时器执行时根据OPERATION的不同执行情况FIRE不同FLAG的EVENTprivate class RemindTask extends TimerTask{ public void run() { if(Operation()){ fireEventReceived(true); } else{ fireEventReceived(false); } } }protected void fireEventReceived(boolean flag) { Object[] listeners = listenerList.getListenerList(); MyEvent event = new MyEvent(this, flag); for (int i = listeners.length - 2; i >= 0; i -= 2) { if (listeners[i] == MyEventListener.class) { ( (MyEventListener) listeners[i +1]).Succeed(event); } } } 使用时你需要实现MyEventListener接口,并实现里面的SUCCEED方法,建议你先看书再看代码. 对于不符合要求的数据,在代码中直接写上抛出异常:throw YourException("不符合要求");YourException 是你自己根据需要继承一些异常的类(包括异常基类).比如:在对数据库操作,你可以继承SQLException 生成,当然自己写也行. 所谓“事件”,在Java中是通过接口实现的。 java中的位运算 如何设计用过一次就废弃的号码 就像是手机充值 JMenu的问题~` 動態取JTextField的內容 LinkedList,ArrayList可否通过实现Comparable或Comparator加入比较方法 可能是刷新的问题 为什么我这段代码输出一直是9不是0123456789 如何改变JBuilder中生成的exe文件的图标?? 给点ant的下载地址? 程序动态加载的问题 添加自定义的事件 怎样实现从本机上传文件到服务器(从服务器下载文件到本机)
public class MyEvent extends EventObject {
private boolean flag = false;
public MyEvent(Object source,boolean check){
super(source);
flag = check;
} public void setFlag(boolean flag){
this.flag = flag;
} public boolean getFlag(){
return this.flag;
}
}
public interface MyEventListener extends EventListener
{
public void Succeed(MyEvent event);
}//在定时器执行时根据OPERATION的不同执行情况FIRE不同FLAG的EVENT
private class RemindTask extends TimerTask{
public void run() {
if(Operation()){
fireEventReceived(true);
}
else{
fireEventReceived(false);
}
}
}protected void fireEventReceived(boolean flag) {
Object[] listeners = listenerList.getListenerList();
MyEvent event = new MyEvent(this, flag);
for (int i = listeners.length - 2; i >= 0; i -= 2) {
if (listeners[i] == MyEventListener.class) {
( (MyEventListener) listeners[i +1]).Succeed(event);
}
}
}