1

我需要遍历 Blackberry 中的 Tree Field 。我需要知道如何从现有节点检查它是父节点还是子节点?因为我需要子行和父行不同的行颜色

我已经提到了以前的自定义 TreeField 问题,如下面的链接所示

自定义黑莓树域

4

1 回答 1

1

看起来您已经在使用TreeFieldCallback自定义树域的绘画。您可以在drawTreeItem()中检测父节点与子节点。

但是,我们需要清楚您认为什么是“父”和“子”,因为从技术上讲,如果树超过 2 个级别(除了根等级)。


如果“孩子”==“叶子”节点

利用:

public void drawTreeItem(TreeField treeField, Graphics graphics, int node, int y, int width, int indent)  {

    boolean isChild = treeField.getFirstChild(node) == -1;
    if (isChild) {
        // draw child row color
    } else { 
        // draw parent row color
    }
} 

假设您所说的“孩子”是指没有更多自己的孩子的行(也称为“叶”节点)。


如果“孩子”==“非根父母”

如果您认为一个节点同时具有自己的非根父节点和自己子节点是“子”行,则使用以下逻辑:

public void drawTreeItem(TreeField treeField, Graphics graphics, int node, int y, int width, int indent)  {

    boolean isParent = treeField.getParent(node) == 0;
    if (isParent) {
        // draw parent row color
    } else { 
        // draw child row color
    }
}

第二个实现只会将根节点正下方的行着色为“父母”。

于 2013-07-18T18:35:50.807 回答