我爲我的項目使用了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)
任何輸入都會有很大的幫助。
謝謝。
不是'System.out.println(「ERD Circle」);'有錯?改爲使用'GWT.log'或gwt-log。 – 2010-02-06 22:08:59
我只是用它來查看點擊事件是否正常工作。以前我對這行代碼沒有任何問題。我也嘗試通過刪除上述聲明而沒有成功來運行此操作。 – suprasad 2010-02-06 22:43:23
呃,無論如何這是一個長鏡頭 - atm,我無法測試代碼:/ – 2010-02-06 23:01:29