2012-12-09 3 views
0

나는이 문제의 제안에 따라 이벤트 시스템을 사용하고 있습니다 : Create Custom Event in Java수정 문제

내가 처리 할 수있는 구성 요소를 구현하고 구성 요소의 버튼에서 이벤트를 통과합니다. 구성 요소를 자체 jar 파일에 넣습니다. 그럼 난 다른 프로젝트에서 구성 요소와 항아리 파일을 사용하고 내가 함께 만들어 낸 프로그램을 실행하려고 할 때, 그것은 나에게 다음과 같은 오류 준 : 이것은 내가 쓴 핸들러 클래스의 코드가

java.lang.IllegalAccessException: Class Eventing.EventHandler can not access a member of class outfit.proto.frmDo$1 with modifiers "public"

입니다 :

EventHandler<EventListener> _loginEvent = new EventHandler<>(); 

public EventHandler<EventListener> loginEvent(){ 
    return _loginEvent; 
} 

loginButton.addActionListener(new java.awt.event.ActionListener() { 
     public void actionPerformed(java.awt.event.ActionEvent evt) { 
      _loginEvent.raiseEvent(null); 
     } 
}); 

이 내가 frmDo에 이벤트를 잡으려고했던 것입니다 :

public class EventHandler<T> { 
    private ArrayList<T> listenerPool = new ArrayList<>(); 

    public void addListener(T listener){ 
     listenerPool.add(listener); 
    } 

    public void raiseEvent(Object eventData){ 
     for (T listener : listenerPool){ 
        try { 
         if (eventData != null) { 
          listener.getClass().getDeclaredMethods()[0].invoke(listener, eventData); 
         } else { 
          listener.getClass().getDeclaredMethods()[0].invoke(listener); 
         } 
        } catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException ex) { 
         Logger.getLogger(EventHandler.class.getName()).log(Level.SEVERE, null, ex); 
        } 
       } 
      } 
     } 

이 내가 설정하여 구성 요소에 이벤트 핸들러 클래스는 어떻게

+0

질문에 몇 가지 코드를 포함해야합니다. –

답변

0

this에 기반한 위키 피 디아 (Observer) 패턴 항목 위키피디아 항목에서 작동합니다. 나는 이벤트 시스템을 작동 시켰습니다! Java에는 이러한 종류의 시스템에 대한 사전 정의 된 시스템이 있다고 의심됩니다.