나는이 문제의 제안에 따라 이벤트 시스템을 사용하고 있습니다 : 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);
}
}
}
}
이 내가 설정하여 구성 요소에 이벤트 핸들러 클래스는 어떻게
질문에 몇 가지 코드를 포함해야합니다. –