从GWT FlowPanel中移除小部件
问题描述:
我有以下课程来管理基于用户选择的菜单项显示的内容。我遇到了一个问题,它不会删除以前的小部件。我通过使用getWidgetIndex检查了面板中存在的小部件,并且试图使用对象和索引删除小部件,但没有成功。从GWT FlowPanel中移除小部件
当我尝试删除我得到一个异常,这也包括在下面。想法?
public class BaseContentHandler implements ClickHandler{
private Content item;
public BaseContentHandler(Content content){
this.item = content;
}
@Override
public void onClick(ClickEvent event) {
if(currentWidget != null){
contentPanel.remove(contentPanel.getWidgetIndex(currentWidget)/*currentWidget*/);
}
currentWidget = this.item;
contentPanel.add(this.item);
}
}
例外:(类型错误):d是空 堆栈:BWB
其他建议也欢迎。
詹姆斯
答
你可能会更好使用.hide()上currentWidget和.show()上this.item,让他们都在面板上,而不是动态插入和删除它们。
答
您发布的代码片段中缺少某些内容 - contentPanel定义了哪里?
我想为NPE的唯一可能的点这一行: contentPanel.remove(contentPanel.getWidgetIndex(currentWidget)/ currentWidget /);
看来您描述的异常来自JavaScript工具,因为“d”是GWT编译的结果,因此它是一个javascript对象。要从javascript级别获得更详细的信息,您应该以详细模式编译GWT项目:
- 单击“编译GWT项目”图标(在Eclipse中)。
- 选择“输出样式” - 详细并编译。
- 再次运行您的项目,您将得到相同的异常,但名称会告诉您什么是您使用的Java对象,以及java代码中发生异常的原始行是什么。
“currentWidget”在哪里定义? – Jla 2011-01-11 15:53:35