我正在尝试创建一个(非可视)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();
}
}
}
答案 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);
}