繁体   English   中英

在SWT / Eclipse RCP中排序基本树

[英]Sorting a Basic Tree in SWT/Eclipse RCP

我正在构建Eclipse RCP应用程序,并要求一些树按字母顺序排序。 有没有一种方法可以在SWT中对树的内容进行排序? 树上没有列; 这只是一棵普通的老树,就像您可以在Eclipse Package Explorer中找到的一样。 事实上; 如果可以做与Package Explorer(字母排序)完全相同的操作,我会喜欢的。

我尝试了以下方法:

Arrays.sort(treeItem.getItems());

但是TreeItem没有实现Comparable<T>因此它将无法工作。

如果直接使用Tree,则可以查看“排序树”一章: http//www.ibm.com/developerworks/lotus/library/expeditor-swt/

我建议使用TreeViewer并查看“查看器排序器”一章: https : //www.eclipse.org/articles/Article-TreeViewer/TreeViewerArticle.htm

问候,

您不能对树进行排序,但是可以以排序的方式添加新项目,实际上将对树进行排序:

private TreeItem insertItemSorted( TreeItem parentItem, KeyInfo keyInfo )
{
    TreeMap<String, Integer> sorted = new TreeMap<>();
    TreeItem newItem = null;
    TreeItem[] siblings;
    KeyInfo info;
    int index;

    if (parentItem == null || parentItem.getParent() == null)
        siblings = ivKeyTree.getItems();
    else
        siblings = parentItem.getItems();

    index = 0;

    for (TreeItem item : siblings)
    {
        info = (KeyInfo) item.getData();

        sorted.put( info.getSortKey(), new Integer( index++ ) );
    }

    sorted.put( keyInfo.getSortKey(), new Integer( -1 ) );

    index = 0;

    for (Integer number : sorted.values().toArray( new Integer[sorted.size()] ))
    {
        if (number.intValue() == -1)
        {
            if (parentItem == null || parentItem.getParent() == null)
                newItem = new TreeItem( ivKeyTree, Editor.TREE_KEY_STYLE, index );
            else
                newItem = new TreeItem( parentItem, Editor.TREE_KEY_STYLE, index );

            break;
        }

        index++;
    }

    if (newItem == null)
    {
        if (parentItem == null || parentItem.getParent() == null)
            newItem = new TreeItem( ivKeyTree, Editor.TREE_KEY_STYLE );
        else
            newItem = new TreeItem( parentItem, Editor.TREE_KEY_STYLE );
    }

    return newItem;
}

您可以将Interface keyInfo替换为String。 我正在使用该界面,因为我正在对可扩展级别以下的值进行排序。 排序键以-a-表示级别,以-b-表示值。 因此,值名称“ Trend”将具有“ -b-trend”的排序键,依此类推。

+热门
+ -Items
+-更多项目
- - 值
-基本价值

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM