2010-02-06 9 views
2

J'utilise PopupPanel et Gwt Canvas pour mon projet. Ici, lorsqu'on clique sur la zone de dessin de la toile, le popuppanel apparaît. Dans ma classe principale, j'ai une classe privée qui étend PopupPanel et ce panneau est ensuite appelé dans onModuleLoad(). Le code ressemble à ceci:problème avec 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(); 
        }     
       }); 
      }   
     }); 

Ici PopUpPanel est celui qui étend PopupPanel. Voici le code pour 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); 
    } 
} 

Maintenant, le problème que je suis confronté est:

Lorsque je clique sur la zone de toile de dessin PopupPanel apparaît avec une erreur. Voici les détails de l'erreur:

[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) 

Toute entrée serait d'une grande aide.

Merci.

+1

Ce n'est pas 'System.out.println (" Cercle ERD ");' en faute? Utilisez 'GWT.log' ou gwt-log à la place. –

+0

J'utilise juste cela pour voir si l'événement click fonctionne ou pas. Auparavant, je n'avais aucun problème avec cette ligne de code. J'ai également essayé d'exécuter ceci en enlevant la déclaration ci-dessus sans succès. – suprasad

+0

Eh, c'était un long shot de toute façon - atm, je ne peux pas tester le code:/ –

Répondre

1

Je l'ai fonctionné. Cela se produit en raison d'un enregistrement Microsoft JScript manquant. Une fois que j'ai enregistré "regsvr32 jscript.dll" il fonctionne très bien. Merci.

+0

Vous avez bien travaillé :) –