задача: создать новый компонент (декоратор), который мог бы включать в себя другой (не важно какой) компонент и обрабатывать евенты.
делаю так:
public class MyLabel extends Composite implements SourcesMouseEvents {
private MouseListenerCollection mouseListeners = new MouseListenerCollection();
public MyLabel(String text) {
Label label = new Label(text);
initWidget(label);
sinkEvents(Event.MOUSEEVENTS);
}
public void onBrowserEvent(Event event) {
mouseListeners.fireMouseEvent(this, event);
}
public void addMouseListener(MouseListener listener) {
mouseListeners.add(listener);
}
public void removeMouseListener(MouseListener listener) {
mouseListeners.remove(listener);
}
}
.....
MyLabel label = new MyLabel("xxx");
label.addMouseListener(new MouseListener() {
public void onMouseDown(Widget sender, int x, int y) {
System.out.println("down");
}
public void onMouseEnter(Widget sender) {
}
public void onMouseLeave(Widget sender) {
}
public void onMouseMove(Widget sender, int x, int y) {
}
public void onMouseUp(Widget sender, int x, int y) {
}
});
RootPanel.get().add(label);
не работает. почему?