TreeViewer对话框java eclipse不提供树项子项
我创建了一个自定义内容提供程序,它实现了TreeViewer对话框java eclipse不提供树项子项,java,eclipse,treeview,treeviewer,Java,Eclipse,Treeview,Treeviewer,我创建了一个自定义内容提供程序,它实现了ITreeContentProvider,我的自定义模型与此类似:它具有类别,TODO和TODO作为类别的子级存储在类类别中的列表中。 我正在使用eclipse dialogCheckedTreesectionDialog,它应该与任何树对话框相同,我扩展了它,以便能够在地图中获取选中的元素,但由于某些原因,我可以获取Level 1的树元素,但不能获取它们的子元素,我无法理解为什么 public void createMapOfCheckedIte
ITreeContentProvider
,我的自定义模型与此类似:它具有类别,TODO和TODO作为类别的子级存储在类类别中的列表中。
我正在使用eclipse dialogCheckedTreesectionDialog
,它应该与任何树对话框相同,我扩展了它,以便能够在地图中获取选中的元素,但由于某些原因,我可以获取Level 1的树元素,但不能获取它们的子元素,我无法理解为什么
public void createMapOfCheckedItems() {
mapOfCheckedElements = new HashMap<Object, List<Object>>();
for (TreeItem level1 : getTreeViewer().getTree().getItems()) {
if (level1.getChecked()) {
List<Object> checkedChildren = new ArrayList<Object>();
for (TreeItem level2 : level1.getItems()) {
if (level2.getChecked()) {
checkedChildren.add(level2.getData());
}
}
mapOfCheckedElements.put(level1.getData(), checkedChildren);
}
}
}
public void createMapOfCheckedItems(){
MapOfCheckDeletes=新HashMap();
对于(树项级别1:getTreeViewer().getTree().getItems()){
如果(level1.getChecked()){
List checkedChildren=new ArrayList();
for(TreeItem level2:level1.getItems()){
如果(level2.getChecked()){
checkedChildren.add(level2.getData());
}
}
MapofCheckDeletes.put(level1.getData(),checkedChildren);
}
}
}
代码如上所示,但是level1.getItems()
返回一个空的treeitem,但是选择对话框正确地显示了父母和孩子。阅读API Javadoc我发现:
返回作为接收方的直接项子项的TreeItems数组(可能为空)。
注意:这不是接收方用于维护其项目列表的实际结构,因此修改数组不会影响接收方
我对SWTAPI的了解不太广泛,但我猜测使用该方法可以解决问题,因为支持查看器获取所有节点的状态
因此,您的代码应该如下所示:
if (level1.getChecked()) {
List<Object> checkedChildren = new ArrayList<Object>();
for (Item level2 : getTreeViewer().getItems(level1)) {
if (((TreeItem)level2).getChecked()) {
checkedChildren.add(level2.getData());
}
}
mapOfCheckedElements.put(level1.getData(), checkedChildren);
}
if(level1.getChecked()){
List checkedChildren=new ArrayList();
对于(项目级别2:getTreeViewer().getItems(级别1)){
if(((TreeItem)level2.getChecked()){
checkedChildren.add(level2.getData());
}
}
MapofCheckDeletes.put(level1.getData(),checkedChildren);
}
如何访问某个密钥的子项?你们做过检查地图吗?得到(1级)?也许你应该把树元素直接放到HashMap中,而不是它的数据中。你如何创建查看器?请发布getTreeViewer()
方法的内容。