hallo zusammen...ich bin neu hier,
so nun etwas kurzes zu meiner person:
bin von beruf her mediendesigner....hab angefangen zu programmieren mit flash actionscript und will nun auf java umsteigen
so nun zum problem...hab mir gedacht zur übung programmier ik mir nen Event dispatcher, die methoden addlistener und removeListener stellen eigentlich kein problem dar doch in der methode dispatchEvent macht mich invoke um den schlaf....aslo beim kompileren bekomm ik keine fehlermeldung doch beim ausführen bekomm ik folgendes:
nun zu den klassen
EventDispatcher
Event
EventListener
und die Main
ik hoffe mir kann jemand helfen....
so nun etwas kurzes zu meiner person:
bin von beruf her mediendesigner....hab angefangen zu programmieren mit flash actionscript und will nun auf java umsteigen
so nun zum problem...hab mir gedacht zur übung programmier ik mir nen Event dispatcher, die methoden addlistener und removeListener stellen eigentlich kein problem dar doch in der methode dispatchEvent macht mich invoke um den schlaf....aslo beim kompileren bekomm ik keine fehlermeldung doch beim ausführen bekomm ik folgendes:
java.lang.IllegalAccessException: Class de.djpublic.event.EventDispatcher can not access a member of class Main$1 with modifiers "public"
nun zu den klassen
EventDispatcher
Code:
package de.djpublic.event;
import java.util.*;
import java.lang.reflect.*;
public class EventDispatcher implements IEventDispatcher{
private Vector<EventListener> listeners;
/**
*
*/
public EventDispatcher(){
this.listeners = new Vector<EventListener>();
}
/**
*
*/
public Vector getListeners(){
return this.listeners;
}
/**
*
*/
public boolean addListener(EventListener listener){
this.removeListener(listener);
this.listeners.addElement(listener);
return true;
}
/**
*
*/
public boolean removeListener(EventListener listener){
int l = this.listeners.size();
for(int i = 0; i < l; i ++){
if(this.listeners.get(i).equals(listener)){
this.listeners.remove(i);
return true;
}
}
return false;
}
/**
*
*/
public void dispatchEvent(Event event){
int l = this.listeners.size();
for(int i = 0; i < l; i ++){
EventListener e = this.listeners.get(i);
try{
Method met = e.getClass().getMethod(event.getType(), Event.class);
met.invoke(e, event);
}catch(Exception ex){
System.out.println(ex);
}
}
}
}
Event
Code:
package de.djpublic.event;
public class Event implements IEvent{
protected String type;
protected IEventDispatcher target;
public Event(String type, IEventDispatcher target){
this.type = type;
this.target = target;
}
public String getType(){
return this.type;
}
public IEventDispatcher getTarget(){
return this.target;
}
}
EventListener
Code:
package de.djpublic.event;
public class EventListener{
public EventListener(){
}
public void start(Event e){
}
public void change(Event e){
}
public void finish(Event e){
}
}
und die Main
Code:
import de.djpublic.event.*;
public class Main extends EventDispatcher {
/**
* @param args
* @throws Exception
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Main m = new Main();
EventListener l = new EventListener(){
public void start(Event e){
System.out.println("onStart");
}
};
m.addListener(l);
m.start();
}
public Main(){
}
public void start(){
dispatchEvent(new Event("start", this));
}
}
ik hoffe mir kann jemand helfen....