如何在GWT框架中使用事件

时间:2012-11-30 11:01:59

标签: events gwt frame

我想捕获GWT框架内的所有事件。我发现了几种方法,但它们只返回mousemove和mouseout事件。我还需要按键,输入等。目标是捕获事件并使用websockets将它们发送到另一个客户端,然后在另一端复制它们(共同浏览)。

我在框架内的同一个域中使用了一个页面。

public class ESinkFrame extends Frame implements EventListener { 

    public ESinkFrame(String src){ 
          super(src); 

      DOM.sinkEvents(getElement(), Event.KEYEVENTS);
      DOM.sinkEvents(getElement(), Event.MOUSEEVENTS);
    } 

    public void onBrowserEvent(Event event) { 
          System.out.println( "sunk event: " + DOM.eventGetTypeString(event) ); 
    } 
} 

当我使用它时,我也尝试使用不同的方式来抓住事件。

ESinkFrame frame = new ESinkFrame("http://127.0.0.1:8888/other.html");

RootPanel.get().add(frame);


FrameElement frameElt = frame.getElement().cast();
Document frameDoc = frameElt.getContentDocument();
BodyElement body = frameDoc.getBody();
Element el = body.cast();

DOM.setEventListener(el, new EventListener()
{
    public void onBrowserEvent(Event event)
        {
            Window.alert("test");
        }

});
DOM.sinkEvents(el, Event.KEYEVENTS);

Event.addNativePreviewHandler(new NativePreviewHandler(){
    public void onPreviewNativeEvent(NativePreviewEvent event) {
        String eventName = event.getNativeEvent().getType();
        if (event.isFirstHandler() /* && (event.getTypeInt() & Event.MOUSEEVENTS) == 0*/)
        System.out.println("PreviewHandler: " + eventName);
        }
});

0 个答案:

没有答案