Javabean事件的标准格式

时间:2014-11-12 18:00:32

标签: java events netbeans javabeans

我正在尝试创建一个(非可视)JavaBean,它将成为多个NetBeans表单中的一个组件,并且事件将触发这些表单中的操作。我试图遵循Java bean tutorial中描述的事件规范。但是,当我将bean粘贴到表单中时,它不会显示事件。我做错了什么?

以下是我正在使用的代码:

public interface UserListListener extends java.util.EventListener {
    void update();
}

import java.util.ArrayList;
public class UpdateChecker {
    private ArrayList<UserListListener> userListListeners = new ArrayList<>();
    public UpdateChecker(){}

    public void addUserListListener(UserListListener l) {
        userListListeners.add(l);
    }
    public void removeUserListListener(UserListListener l) {
        userListListeners.remove(l);
    }

    void fireUserListEvent() {
        for(UserListListener l : userListListeners) {
            l.update();
        }
    }

}

1 个答案:

答案 0 :(得分:0)

我在official JavaBeans specifications找到了答案。我没有意识到的是EventListener中的方法需要java.util.EventObject作为其参数。因为这(由于某种原因)文档记录很差,所以我发布了一个完整的示例供将来参考:

import java.util.ArrayList;
public class UpdateChecker {
    private ArrayList<UserListListener> userListListeners = new ArrayList<>();
    public UpdateChecker(){}

    public void addUserListListener(UserListListener l) {
        userListListeners.add(l);
    }
    public void removeUserListListener(UserListListener l) {
        userListListeners.remove(l);
    }

    void fireUserListEvent() {
        for(UserListListener l : userListListeners) {
            l.updated(new UpdateEvent(this));
        }
    }

}

public class UpdateEvent extends java.util.EventObject {

    public UpdateEvent(Object source) {
        super(source);
    }

}

public interface UserListListener extends java.util.EventListener {
    void updated(UpdateEvent evt);
}