我正在使用两个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
}
答案 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
}