【问题标题】:CheckedTreeSelectionDialog check elements initiallyCheckedTreeSelectionDialog 最初检查元素
【发布时间】:2012-12-13 14:16:28
【问题描述】:

我正在使用 CheckedTreeSelectionDialog,我想最初选择一些项目。

如何使用 setInitialSelections 方法来选择子项(level2 项)而不是 level1。

CheckedTreeSelectionDialog dialog = new CheckedTreeSelectionDialog(
    this.containerComposite.getShell(), new myLabelProvider(), new
    myContentProvider());

dialog.setContainerMode(true);
dialog.setInput(new MyModel());

Parent p = new Parent("I am a parent");
p.getChildren.add(new Child("I am a child"));
dialog.setInitialSelection(p);

containerMode 为 false 时不选择子项,而当为 true 时,例如选择所有子项。

【问题讨论】:

  • 没用过,但是看看 API 和您的示例代码,您是否尝试过将 Child 的引用传递给 setInitialSelection 方法?
  • 我试过了,孩子没有被选中,但即使他们做了,有些父母可能有相同的孩子,如何区分?在某种程度上我不应该给出父/子路径?
  • 请把课程内容贴出来myContentProvider

标签: java eclipse dialog swt


【解决方案1】:

只需使用方法SelectionDialog#setInitialElementSelections(List elements) 并在List 中传递您想要选择的元素:

CheckedTreeSelectionDialog dialog = new CheckedTreeSelectionDialog(
this.containerComposite.getShell(), new myLabelProvider(), new myContentProvider());

dialog.setContainerMode(true);
dialog.setInput(new MyModel());

List<Child> list = new ArrayList<Child>();

/* fill your list */

dialog.setInitialElementSelections(list);

【讨论】:

  • 我试过了,孩子没有被选中,但即使他们做了,有些父母可能有相同的孩子,如何区分?在某种程度上,我不应该给 selectT 的父/子路径?
  • @user847988 他们怎么会有同样的孩子?那么它就不是一棵树,而是一张图……
  • @user847988 顺便说一句:我发现了一个非常相似的问题here,答案几乎相同,而且似乎有效。
【解决方案2】:

确保在打开对话框之前
dialog.setInitialElementSelections(model.getAllElements());
完成:dialog.open();
因为否则它将无法正常工作。

我遇到了同样的问题 - 我只能标记第一层元素。 解决方案是确保这些方法在 ITreeContentProvider 实现类中工作:

// this is the object that would get passed into setInput()
private MyModelProvider model; 

@Override
public void inputChanged(Viewer viewer, Object oldInput, Object newInput) 
    this.model = (MyModelProvider ) newInput;
}

@Override
public Object getParent(Object element) {
    if (element instanceof Child)
        return model.getCategories().get(0);    // I only have one category 
    return null;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-11-10
    • 1970-01-01
    • 2011-09-06
    • 1970-01-01
    • 2012-11-23
    • 2013-06-14
    • 1970-01-01
    • 2022-10-13
    相关资源
    最近更新 更多