2010-02-06 59 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