2010-02-06 58 views
2

我为我的项目使用了PopupPanel和Gwt Canvas。这里当点击画布绘图区域时,出现popuppanel。在我的主类中,我有一个扩展PopupPanel的私有类,然后在onModuleLoad()中调用此面板。代码如下所示:PopupPanel问题 - gwt

Button b = new Button("Circle"); 
     b.addClickHandler(new ClickHandler(){ 
      @Override 
      public void onClick(ClickEvent event) { 
       DrawingArea d = new DrawingArea(40, 30); 
       Circle c = new Circle(20, 15, 20); 
       d.add(c); 
       dragController.makeDraggable(d); 
       dragController.setBehaviorDragStartSensitivity(1); 
       boundaryPanel.add(d, 200, 200); 
       //Diagram dia = new Diagram(boundaryPanel); 
       /* Shape s = new Shape(d); 
       s.showOnDiagram(diagram);*/ 
       d.addClickHandler(new ClickHandler(){ 
        @Override 
        public void onClick(ClickEvent event) { 
         System.out.println("ERD Circle"); 
         Widget w = (Widget)event.getSource(); 
         PopUpPanel pop = new PopUpPanel(w); 
         pop.setPopupPosition(w.getAbsoluteLeft() - 150, w.getAbsoluteTop()); 
         pop.show(); 
        }     
       }); 
      }   
     }); 

这里PopUpPanel是扩展PopupPanel的一个。这里PopUpPanel代码:

private static class PopUpPanel extends PopupPanel{ 

    Button connect = new Button("Connect"); 
    Button delete = new Button("Delete"); 
    Button detail = new Button("Detail"); 

    public PopUpPanel(final Widget widget){ 
     super(true); 
     VerticalPanel vp = new VerticalPanel(); 
     vp.add(connect); 
     vp.add(delete); 
     vp.add(detail); 

     setWidget(vp); 
    } 
} 

现在我面临的问题是:

当我在画布上,单击绘图区域PopupPanel有错误出现一起。这里是错误的详细信息:

[ERROR] Uncaught exception escaped 
com.google.gwt.core.client.JavaScriptException: (Error): Invalid class string 


number: -2147221005 
description: Invalid class string 


    at com.google.gwt.user.client.ui.impl.PopupImplIE6.onShow(Native Method) 
    at com.google.gwt.user.client.ui.PopupPanel$ResizeAnimation.onInstantaneousRun(PopupPanel.java:257) 
    at com.google.gwt.user.client.ui.PopupPanel$ResizeAnimation.setState(PopupPanel.java:180) 
    at com.google.gwt.user.client.ui.PopupPanel.setState(PopupPanel.java:1189) 
    at com.google.gwt.user.client.ui.PopupPanel.show(PopupPanel.java:794) 
    at com.e.r.d.client.ERD1$4$1.onClick(ERD1.java:177) 
    at com.google.gwt.event.dom.client.ClickEvent.dispatch(ClickEvent.java:54) 
    at com.google.gwt.event.dom.client.ClickEvent.dispatch(ClickEvent.java:1) 
    at com.google.gwt.event.shared.HandlerManager$HandlerRegistry.fireEvent(HandlerManager.java:65) 
    at com.google.gwt.event.shared.HandlerManager$HandlerRegistry.access$1(HandlerManager.java:53) 
    at com.google.gwt.event.shared.HandlerManager.fireEvent(HandlerManager.java:178) 
    at com.google.gwt.user.client.ui.Widget.fireEvent(Widget.java:52) 
    at com.google.gwt.event.dom.client.DomEvent.fireNativeEvent(DomEvent.java:116) 
    at com.google.gwt.user.client.ui.Widget.onBrowserEvent(Widget.java:90) 
    at com.google.gwt.user.client.DOM.dispatchEventImpl(DOM.java:1320) 
    at com.google.gwt.user.client.DOM.dispatchEventAndCatch(DOM.java:1299) 
    at com.google.gwt.user.client.DOM.dispatchEvent(DOM.java:1262) 

任何输入都会有很大的帮助。

谢谢。

+1

不是'System.out.println(“ERD Circle”);'有错?改为使用'GWT.log'或gwt-log。 – 2010-02-06 22:08:59

+0

我只是用它来查看点击事件是否正常工作。以前我对这行代码没有任何问题。我也尝试通过删除上述声明而没有成功来运行此操作。 – suprasad 2010-02-06 22:43:23

+0

呃,无论如何这是一个长镜头 - atm,我无法测试代码:/ – 2010-02-06 23:01:29

回答

1

我明白了。发生这种情况是由于缺少Microsoft JScript注册。一旦我注册“regsvr32 jscript.dll”它工作正常。谢谢。

+0

伟大的你得到它的工作:) – 2010-02-07 13:15:27