不知道这是否真的是问题的答案,但我希望它可能对未来的人有所帮助。我真的很喜欢 GWT 的 FlexTable 在我正在寻找的标签调整大小方面的表现方式。但是,GXT 将 GWT 的 Widget 实例视为 WidgetComponent,当放置在 FormPanel 中时,不会遍历嵌套的 Field 实例。所以我的最终解决方案是扩展 GXT 的 FormPanel 并覆盖它的 getFields() 和 getChildFields() 函数,后者的逻辑除了 Container 实例之外还查找 WidgetComponent 实例:
for (Component comp : c.getItems()) {
if (comp instanceof Field) {
fields.add((Field<?>) comp);
}
else if (comp instanceof WidgetComponent) {
if (((WidgetComponent) comp).getWidget() instanceof FlexTable) {
// logic to retrieve Field instances from FlexTable
}
}
else if (comp instanceof Container) {
getChildFields((Container<Component>) comp, fields);
}
}
为了补充这个逻辑,我还必须扩展 FlexTable 以允许设置和检索 Field 实例。