Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java CheckedReselection对话框最初检查元素_Java_Eclipse_Dialog_Swt - Fatal编程技术网

Java CheckedReselection对话框最初检查元素

Java CheckedReselection对话框最初检查元素,java,eclipse,dialog,swt,Java,Eclipse,Dialog,Swt,我正在使用一个选中的重新选择对话框,我想先选择一些项目 如何使用方法setInitialSelections选择子项(级别2项目)而不是级别1 CheckedTreeSelectionDialog dialog = new CheckedTreeSelectionDialog( this.containerComposite.getShell(), new myLabelProvider(), new myContentProvider()); dialog.setContai

我正在使用一个选中的重新选择对话框,我想先选择一些项目

如何使用方法setInitialSelections选择子项(级别2项目)而不是级别1

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时,不会选择子元素,而当containerMode为true时(如示例所示),则会选择所有子元素。

只需使用该方法并在
列表中传递要选择的元素即可:

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);
checkedtreeselection对话框=新建checkedtreeselection对话框(
this.containerComposite.getShell()、新的myLabelProvider()、新的myContentProvider();
setContainerMode(true);
setInput(新的MyModel());
列表=新的ArrayList();
/*填写你的清单*/
对话框.setInitialElementSelections(列表);

请确保您完成了您的任务
dialog.setInitialElementSelections(model.getAllegements())
打开对话框之前:
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;
}

没有使用它,但查看API和示例代码,您是否尝试过将对孩子的引用传递到setInitialSelection方法中?我尝试过,但孩子们没有被选中,但即使他们选择了,一些家长可能也有相同的孩子,如何区分?在某种程度上,我不应该给出父/子路径?请发布类的内容
myContentProvider
。我尝试过,但孩子们没有被选中,但即使他们这样做了,一些父母可能有相同的孩子,它如何区分?在某种程度上,我不应该给父/子路径进行选择?@user847988他们怎么会有相同的子级?然后它将不是一棵树而是一个图形…@user847988顺便说一句:我发现了一个非常相似的问题,答案几乎相同,而且似乎有效。