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.
Ce n'est pas 'System.out.println (" Cercle ERD ");' en faute? Utilisez 'GWT.log' ou gwt-log à la place. –
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
Eh, c'était un long shot de toute façon - atm, je ne peux pas tester le code:/ –