如何检查GWT中ROOTPanel上当前添加的类

时间:2016-02-24 05:16:28

标签: java class gwt uibinder

我正在使用两个uibinder类并将其添加到ROOTPanel中。假设我有两个ABC和XYZ类,如果我在ROOTPanel上添加它,那么我想知道当前在ROOTPanel上添加了哪个类。

这是代码

因此,使用id" panel"

在ROOTPanel上添加ABC类
if(i==1) {
   ROOTPanel.get("panel").add(new ABC());
} else {
   ROOTPanel.get("panel").add(new XYZ());
}

现在我想要在" panel"上添加哪个类。 ID

if(//some condition which return the true or false for ABC class is added or not) {
   // to do something
}

1 个答案:

答案 0 :(得分:1)

您可以使用方法getWidgetIndex检查添加的Widget的索引,并将条件设置为索引!= -1,因为根据此方法的文档:

  

获取指定子窗口小部件的索引。

     

在IndexedPanel中指定者:getWidgetIndex(...)
参数:child   要找到的窗口小部件
返回:窗口小部件的索引,如果不是,则返回-1   这个小组的孩子

所以你的代码变成了:

ABC abc = new ABC();
XYZ xyz = new XYZ();
if(i==1) {
   ROOTPanel.get("panel").add(abc);
} else {
   ROOTPanel.get("panel").add(xyz);
}
if(ROOTPanel.get("panel").getWidgetIndex(abc) != -1) {
   // You know ABC was added
}

如果您不想在添加之前实例化ABC和XYZ对象,则必须保存添加的窗口小部件的索引,然后使用方法.getWidget(index)并检查返回窗口小部件的类类型,如:

Widget widget = ROOTPanel.get("panel").getWidget(index);

    if(widget instanceof ABC){
    // do something
    }