1

我正在SapTree使用以下代码从 a 中删除节点:

SapTree tree; // initialized somewhere
String key; // initialized somewhere
String itemname; // initialized somewhere
tree.selectNode(key);
tree.expandNode(key);
tree.ensureVisibleHorizontalItem(key, itemname);
tree.nodeContextMenu(key);
tree.selectContextMenuItem("DELETE_OBJECT");

但是,有时我无法删除项目,例如由于权限或其他依赖关系。如何检查是否可以删除该项目?

以上所有方法都返回void,因此没有反馈。

我尝试了什么?

我查阅了文档(SapTree [MicroFocus]),寻找一种可以获取密钥并返回某些内容的方法。我希望找到一种boolean exists(String key)或类似的方法。

4

1 回答 1

1

key如果节点不存在,几乎所有带参数的方法都会抛出 RuntimeException。所以我结束了调用getNodeTop(),它在树上操作时不会造成任何副作用(selectNode()与其他相比)。通过捕获异常,我决定节点是否存在:

/**
 * Checks whether a node with the given key exists in the tree
 * @param haystack    Tree to find the key in
 * @param nodeKey     Node key to be found
 * @return True if the node was found (determined by getting the top location), false if the node was not found
 */
private boolean nodeExists(SapTree haystack, String nodeKey)
{
    try
    {
        haystack.getNodeTop(nodeKey);
        return true;
    } catch (RuntimeException rex)
    {
        return false;
    }
}

这个答案是在 CC0 下共同许可的。

于 2015-03-03T10:19:16.370 回答