如何在 GWT 的 ROOTPanel 上检查当前添加的 class

How to check currently added class on ROOTPanel in GWT

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

这是代码

所以 ABC class 使用 id "panel"

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

现在我想要 class 添加到 "panel" id

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

你可以使用方法getWidgetIndex查看添加的Widget的索引,条件是index != -1 因为根据这个方法的文档:

Gets the index of the specified child widget.

Specified by: getWidgetIndex(...) in IndexedPanel
Parameters:child the widget to be found
Returns:the widget's index, or -1 if it is not a child of this panel

因此您的代码变为:

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) 并检查返回的 class 类型像这样的小部件:

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

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