2014-11-12 3 views
0

Я пытаюсь создать (невизуальный) JavaBean, который будет компонентом в нескольких формах NetBeans, и события будут удалять действия в этих формах. Я попытался выполнить спецификации для событий, как описано в Java bean tutorial. Однако, когда я вставляю bean-компонент в форму, он не показывает события. Что я делаю не так?Стандартный формат для событий Javabean

Вот код, я использую:

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

Я нашел ответ в 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); 
} 
Смежные вопросы