在这里发现了几个问题:
1. 从来没有找到有效更新树项上的图标的方法。
2. 如果您尝试从数据源方法中添加/删除,发现某些树控件对象未初始化,因此删除项目会引发 Object Not Initialized 错误。
通过以下方式修复它:
1. 创建一个新项目(旧项目的 addAfterIdx)。
2. 删除旧项目。
3. 选择新项目。
3. 将方法从数据源移动到实际的表单控件。
这是对我有用的代码:
public boolean modified()
{
boolean ret;
FormTreeItem workingItem = FormTreeControl.getItem(currentEditingIdx);
TreeItemIdx newItemIdx;
;
ret = super();
//create a new item
newItemIdx = SysFormTreeControl::addTreeItem(FormTreeControl, workingItem.text(), FormTreeControl.getParent(workingItem.idx()), workingItem.data(), element.imageIdx(ABC_Icon.text()));
//delete the old item
FormTreeControl.delete(currentEditingIdx);
//select the new item
FormTreeControl.selectionChanged(FormTreeControl.getItem(FormTreeControl.getRoot()), FormTreeControl.getItem(newItemIdx), FormTreeSelect::Unknown);
return ret;
}