如何添加复合窗口小部件:这个窗口小部件的父窗口没有实现HasWidgets
问题描述:
我不断收到一个错误提示:“这个窗口小部件的父窗口没有实现HasWidgets,梳理了网页(包括*),但无法弄清楚是什么问题。我知道它的一个问题,就是我将Download对象添加到VerticalPanel的'文本'的方式,但是,我不知道为什么抛出它,或者如何修复它。另外,当我运行该应用程序时,它首先成功并且。只引发错误的第二次,我试图访问下载页面的任何帮助,将不胜感激如何添加复合窗口小部件:这个窗口小部件的父窗口没有实现HasWidgets
public class SIXPAC implements EntryPoint, HasWidgets
{
private VerticalPanel mainPanel = new VerticalPanel() ;
private HorizontalPanel menu = new HorizontalPanel() ;
private VerticalPanel text = new VerticalPanel() ;
private SIXPACServiceAsync services = GWT.create(SIXPACService.class) ;
public void onModuleLoad()
{
header() ;
changePage("about.txt") ;
footer() ;
RootPanel.get("sixPac").add(mainPanel) ;
mainPanel.setWidth("100%");
}
public void header()
{
menu.add(menu stuff...) ;
mainPanel.add(menu) ;
mainPanel.add(text) ;
}
public void footer()
{
mainPanel.add(footer stuff...) ;
}
public void changePage(String token)
{
if(token.equals("download.txt")) // else its download page and need to set up the forms
{
text.clear() ;
try
{
add(new Download()) ;
}
catch(Exception e)
{
System.out.println(e) ;
}
text.setStyleName("contentbox") ;
}
}
public void add(Widget w) // tried basic implementation of the HasWidgets methods...
{
text.add(w) ;
}
public void clear()
{
}
public Iterator<Widget> iterator() {
// TODO Auto-generated method stub
return null;
}
public boolean remove(Widget w) {
// TODO Auto-generated method stub
return false;
}
}
对于我基本解除一切为了测试的缘故下载类:
package com.sixpac.website.client;
import java.util.Iterator;
public class Download extends Composite
{
private static VerticalPanel verticalPanel = new VerticalPanel();
public Download()
{
verticalPanel.setStyleName("contentbox");
initWidget(verticalPanel);
verticalPanel.setWidth("100%");
verticalPanel.add(new HTML("<h1>Download</h1>")) ;
HorizontalPanel horizontalPanel = new HorizontalPanel();
horizontalPanel.setHorizontalAlignment(HasHorizontalAlignment.ALIGN_CENTER);
horizontalPanel.setWidth("100%");
verticalPanel.add(horizontalPanel) ;
System.out.println("creating new login") ;
Login login = new Login() ;
System.out.println("creating new register") ;
Register register = new Register() ;
horizontalPanel.add(login) ;
login.setSize("75%", "310px");
horizontalPanel.setCellVerticalAlignment(login, HasVerticalAlignment.ALIGN_BOTTOM);
horizontalPanel.add(register) ;
register.setSize("90%", "257px");
horizontalPanel.setCellVerticalAlignment(register, HasVerticalAlignment.ALIGN_BOTTOM);
setStyleName("gwt");
}
public static void downloadOk()
{
verticalPanel.add(new HTML("<br/><br/>")) ;
verticalPanel.add(new HTML("<div class=\"contentbox downloadok\">\n\t\n<p>Thank you for downloading SIXPAC Version 0.5 (Beta).</p>\n<p>Please direct all technical questions and bug-reports to Snehit Prabhu (<a href=\"mailto:[email protected]\">[email protected]</a>)</p>\n\t\n<br />\n\t\n<a href=\"#\" class=\"downloadbutton\">Download SIXPAC</a>\n\n<br /><br />\n</div>\n\n\n</div><!--contentbox-->")) ;
}
}
堆栈跟踪:
02:24:14.763 [ERROR] [sixpac] Uncaught exception escaped
com.google.gwt.event.shared.UmbrellaException: One or more exceptions caught, see full set in UmbrellaException#getCauses
at com.google.gwt.event.shared.HandlerManager.fireEvent(HandlerManager.java:129)
at com.google.gwt.user.client.ui.Widget.fireEvent(Widget.java:129)
at com.google.gwt.event.dom.client.DomEvent.fireNativeEvent(DomEvent.java:116)
at com.google.gwt.user.client.ui.Widget.onBrowserEvent(Widget.java:177)
at com.google.gwt.user.client.ui.CustomButton.onBrowserEvent(CustomButton.java:698)
at com.google.gwt.user.client.DOM.dispatchEventImpl(DOM.java:1351)
at com.google.gwt.user.client.DOM.dispatchEvent(DOM.java:1307)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.google.gwt.dev.shell.MethodAdaptor.invoke(MethodAdaptor.java:103)
at com.google.gwt.dev.shell.MethodDispatch.invoke(MethodDispatch.java:71)
at com.google.gwt.dev.shell.OophmSessionHandler.invoke(OophmSessionHandler.java:172)
at com.google.gwt.dev.shell.BrowserChannelServer.reactToMessagesWhileWaitingForReturn(BrowserChannelServer.java:337)
at com.google.gwt.dev.shell.BrowserChannelServer.invokeJavascript(BrowserChannelServer.java:218)
at com.google.gwt.dev.shell.ModuleSpaceOOPHM.doInvoke(ModuleSpaceOOPHM.java:136)
at com.google.gwt.dev.shell.ModuleSpace.invokeNative(ModuleSpace.java:561)
at com.google.gwt.dev.shell.ModuleSpace.invokeNativeObject(ModuleSpace.java:269)
at com.google.gwt.dev.shell.JavaScriptHost.invokeNativeObject(JavaScriptHost.java:91)
at com.google.gwt.core.client.impl.Impl.apply(Impl.java)
at com.google.gwt.core.client.impl.Impl.entry0(Impl.java:213)
at sun.reflect.GeneratedMethodAccessor24.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.google.gwt.dev.shell.MethodAdaptor.invoke(MethodAdaptor.java:103)
at com.google.gwt.dev.shell.MethodDispatch.invoke(MethodDispatch.java:71)
at com.google.gwt.dev.shell.OophmSessionHandler.invoke(OophmSessionHandler.java:172)
at com.google.gwt.dev.shell.BrowserChannelServer.reactToMessagesWhileWaitingForReturn(BrowserChannelServer.java:337)
at com.google.gwt.dev.shell.BrowserChannelServer.invokeJavascript(BrowserChannelServer.java:218)
at com.google.gwt.dev.shell.ModuleSpaceOOPHM.doInvoke(ModuleSpaceOOPHM.java:136)
at com.google.gwt.dev.shell.ModuleSpace.invokeNative(ModuleSpace.java:561)
at com.google.gwt.dev.shell.ModuleSpace.invokeNativeVoid(ModuleSpace.java:289)
at com.google.gwt.dev.shell.JavaScriptHost.invokeNativeVoid(JavaScriptHost.java:107)
at com.google.gwt.dom.client.DOMImplStandard.dispatchEvent(DOMImplStandard.java)
at com.google.gwt.dom.client.Element$.dispatchEvent$(Element.java:142)
at com.google.gwt.user.client.ui.CustomButton.onClick(CustomButton.java:825)
at com.google.gwt.user.client.ui.PushButton.onClick(PushButton.java:190)
at com.google.gwt.user.client.ui.CustomButton.onBrowserEvent(CustomButton.java:656)
at com.google.gwt.user.client.DOM.dispatchEventImpl(DOM.java:1351)
at com.google.gwt.user.client.DOM.dispatchEvent(DOM.java:1307)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.google.gwt.dev.shell.MethodAdaptor.invoke(MethodAdaptor.java:103)
at com.google.gwt.dev.shell.MethodDispatch.invoke(MethodDispatch.java:71)
at com.google.gwt.dev.shell.OophmSessionHandler.invoke(OophmSessionHandler.java:172)
at com.google.gwt.dev.shell.BrowserChannelServer.reactToMessagesWhileWaitingForReturn(BrowserChannelServer.java:337)
at com.google.gwt.dev.shell.BrowserChannelServer.invokeJavascript(BrowserChannelServer.java:218)
at com.google.gwt.dev.shell.ModuleSpaceOOPHM.doInvoke(ModuleSpaceOOPHM.java:136)
at com.google.gwt.dev.shell.ModuleSpace.invokeNative(ModuleSpace.java:561)
at com.google.gwt.dev.shell.ModuleSpace.invokeNativeObject(ModuleSpace.java:269)
at com.google.gwt.dev.shell.JavaScriptHost.invokeNativeObject(JavaScriptHost.java:91)
at com.google.gwt.core.client.impl.Impl.apply(Impl.java)
at com.google.gwt.core.client.impl.Impl.entry0(Impl.java:213)
at sun.reflect.GeneratedMethodAccessor24.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.google.gwt.dev.shell.MethodAdaptor.invoke(MethodAdaptor.java:103)
at com.google.gwt.dev.shell.MethodDispatch.invoke(MethodDispatch.java:71)
at com.google.gwt.dev.shell.OophmSessionHandler.invoke(OophmSessionHandler.java:172)
at com.google.gwt.dev.shell.BrowserChannelServer.reactToMessages(BrowserChannelServer.java:292)
at com.google.gwt.dev.shell.BrowserChannelServer.processConnection(BrowserChannelServer.java:546)
at com.google.gwt.dev.shell.BrowserChannelServer.run(BrowserChannelServer.java:363)
at java.lang.Thread.run(Thread.java:680)
Caused by: java.lang.AssertionError: This UIObject's element is not set; you may be missing a call to either Composite.initWidget() or UIObject.setElement()
at com.google.gwt.user.client.ui.UIObject.getElement(UIObject.java:527)
at com.google.gwt.user.client.ui.ComplexPanel.add(ComplexPanel.java:94)
at com.google.gwt.user.client.ui.VerticalPanel.add(VerticalPanel.java:48)
at com.sixpac.website.client.SIXPAC.changePage(SIXPAC.java:140)
at com.sixpac.website.client.SIXPAC$3.onClick(SIXPAC.java:69)
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.GwtEvent.dispatch(GwtEvent.java:1)
at com.google.web.bindery.event.shared.EventBus.dispatchEvent(EventBus.java:40)
at com.google.web.bindery.event.shared.SimpleEventBus.doFire(SimpleEventBus.java:193)
at com.google.web.bindery.event.shared.SimpleEventBus.fireEvent(SimpleEventBus.java:88)
at com.google.gwt.event.shared.HandlerManager.fireEvent(HandlerManager.java:127)
at com.google.gwt.user.client.ui.Widget.fireEvent(Widget.java:129)
at com.google.gwt.event.dom.client.DomEvent.fireNativeEvent(DomEvent.java:116)
at com.google.gwt.user.client.ui.Widget.onBrowserEvent(Widget.java:177)
at com.google.gwt.user.client.ui.CustomButton.onBrowserEvent(CustomButton.java:698)
at com.google.gwt.user.client.DOM.dispatchEventImpl(DOM.java:1351)
at com.google.gwt.user.client.DOM.dispatchEvent(DOM.java:1307)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.google.gwt.dev.shell.MethodAdaptor.invoke(MethodAdaptor.java:103)
at com.google.gwt.dev.shell.MethodDispatch.invoke(MethodDispatch.java:71)
at com.google.gwt.dev.shell.OophmSessionHandler.invoke(OophmSessionHandler.java:172)
at com.google.gwt.dev.shell.BrowserChannelServer.reactToMessagesWhileWaitingForReturn(BrowserChannelServer.java:337)
at com.google.gwt.dev.shell.BrowserChannelServer.invokeJavascript(BrowserChannelServer.java:218)
at com.google.gwt.dev.shell.ModuleSpaceOOPHM.doInvoke(ModuleSpaceOOPHM.java:136)
at com.google.gwt.dev.shell.ModuleSpace.invokeNative(ModuleSpace.java:561)
at com.google.gwt.dev.shell.ModuleSpace.invokeNativeObject(ModuleSpace.java:269)
at com.google.gwt.dev.shell.JavaScriptHost.invokeNativeObject(JavaScriptHost.java:91)
at com.google.gwt.core.client.impl.Impl.apply(Impl.java)
at com.google.gwt.core.client.impl.Impl.entry0(Impl.java:213)
at sun.reflect.GeneratedMethodAccessor24.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.google.gwt.dev.shell.MethodAdaptor.invoke(MethodAdaptor.java:103)
at com.google.gwt.dev.shell.MethodDispatch.invoke(MethodDispatch.java:71)
at com.google.gwt.dev.shell.OophmSessionHandler.invoke(OophmSessionHandler.java:172)
at com.google.gwt.dev.shell.BrowserChannelServer.reactToMessagesWhileWaitingForReturn(BrowserChannelServer.java:337)
at com.google.gwt.dev.shell.BrowserChannelServer.invokeJavascript(BrowserChannelServer.java:218)
at com.google.gwt.dev.shell.ModuleSpaceOOPHM.doInvoke(ModuleSpaceOOPHM.java:136)
at com.google.gwt.dev.shell.ModuleSpace.invokeNative(ModuleSpace.java:561)
at com.google.gwt.dev.shell.ModuleSpace.invokeNativeVoid(ModuleSpace.java:289)
at com.google.gwt.dev.shell.JavaScriptHost.invokeNativeVoid(JavaScriptHost.java:107)
at com.google.gwt.dom.client.DOMImplStandard.dispatchEvent(DOMImplStandard.java)
at com.google.gwt.dom.client.Element$.dispatchEvent$(Element.java:142)
at com.google.gwt.user.client.ui.CustomButton.onClick(CustomButton.java:825)
at com.google.gwt.user.client.ui.PushButton.onClick(PushButton.java:190)
at com.google.gwt.user.client.ui.CustomButton.onBrowserEvent(CustomButton.java:656)
at com.google.gwt.user.client.DOM.dispatchEventImpl(DOM.java:1351)
at com.google.gwt.user.client.DOM.dispatchEvent(DOM.java:1307)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.google.gwt.dev.shell.MethodAdaptor.invoke(MethodAdaptor.java:103)
at com.google.gwt.dev.shell.MethodDispatch.invoke(MethodDispatch.java:71)
at com.google.gwt.dev.shell.OophmSessionHandler.invoke(OophmSessionHandler.java:172)
at com.google.gwt.dev.shell.BrowserChannelServer.reactToMessagesWhileWaitingForReturn(BrowserChannelServer.java:337)
at com.google.gwt.dev.shell.BrowserChannelServer.invokeJavascript(BrowserChannelServer.java:218)
at com.google.gwt.dev.shell.ModuleSpaceOOPHM.doInvoke(ModuleSpaceOOPHM.java:136)
at com.google.gwt.dev.shell.ModuleSpace.invokeNative(ModuleSpace.java:561)
at com.google.gwt.dev.shell.ModuleSpace.invokeNativeObject(ModuleSpace.java:269)
at com.google.gwt.dev.shell.JavaScriptHost.invokeNativeObject(JavaScriptHost.java:91)
at com.google.gwt.core.client.impl.Impl.apply(Impl.java)
at com.google.gwt.core.client.impl.Impl.entry0(Impl.java:213)
at sun.reflect.GeneratedMethodAccessor24.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.google.gwt.dev.shell.MethodAdaptor.invoke(MethodAdaptor.java:103)
at com.google.gwt.dev.shell.MethodDispatch.invoke(MethodDispatch.java:71)
at com.google.gwt.dev.shell.OophmSessionHandler.invoke(OophmSessionHandler.java:172)
at com.google.gwt.dev.shell.BrowserChannelServer.reactToMessages(BrowserChannelServer.java:292)
at com.google.gwt.dev.shell.BrowserChannelServer.processConnection(BrowserChannelServer.java:546)
at com.google.gwt.dev.shell.BrowserChannelServer.run(BrowserChannelServer.java:363)
at java.lang.Thread.run(Thread.java:680)
答
的问题是verticalPanel正在下载类的静态。我认为这会导致您的代码在多次调用时导致引用错误。尝试删除静态它应该工作。同样在另一个说明中,您可以通过将其传递给文本实例来实现haswidget接口方法的其余部分,就像执行add一样。
+0
啊...谢谢你的工作! 因此,在下载对象中,我添加了两个其他对象,即登录和注册,这两个对象都是表单。一旦用户填写了他们的详细信息并点击登录按钮(下载对象)(或SIXPAC底稿),然后必须生成一个带有链接的额外数据框,那么如何将数据发送回来,以便用户登录并它可以向他展示链接? –
请问您可以发布“下载”类的框架?如果您也发布完整的堆栈跟踪将会很有帮助。 – Behrang
也发布你正在获得的异常的堆栈跟踪 – awmross
完成。添加。谢谢! –