gpt4 book ai didi

java - org.eclipse.core.runtime.AssertionFailedException : assertion failed: in TreeViewer

转载 作者:行者123 更新时间:2023-12-01 11:11:58 28 4
gpt4 key购买 nike

我正在尝试学习 Treeviewer。但是,在运行代码时,我在执行该行时遇到错误 -

treeViewer.setContentProvider(new AddressContentProvider());

下面是我为 View 创建的完整代码-

public class ViewPart1 extends ViewPart {

public static final String ID = "HelloWorld.view1";
TreeViewer treeViewer;

public ViewPart1() {
// TODO Auto-generated constructor stub
}

@Override
public void createPartControl(Composite parent) {
Tree addressTree = new Tree(parent, SWT.BORDER | SWT.H_SCROLL
| SWT.V_SCROLL);
addressTree.setHeaderVisible(true);

TreeColumn column1 = new TreeColumn(addressTree, SWT.LEFT);
addressTree.setLinesVisible(true);
column1.setAlignment(SWT.LEFT);
column1.setText("Land/Stadt");
column1.setWidth(160);
TreeColumn column2 = new TreeColumn(addressTree, SWT.RIGHT);
column2.setAlignment(SWT.LEFT);
column2.setText("Person");
column2.setWidth(100);
TreeColumn column3 = new TreeColumn(addressTree, SWT.RIGHT);
column3.setAlignment(SWT.LEFT);
column3.setText("m/w");
column3.setWidth(35);

treeViewer = new TreeViewer(addressTree);
treeViewer.setContentProvider(new AddressContentProvider());
treeViewer.setLabelProvider(new TableLabelProvider());
List<City> cities = new ArrayList<City>();
cities.add(new City());
treeViewer.setInput(cities);
treeViewer.expandAll();

}

@Override
public void setFocus() {
// TODO Auto-generated method stub

}
}

My AddressContentProvider Class looks like this -

public class AddressContentProvider implements IContentProvider {
public Object[] getChildren(Object parentElement) {
if (parentElement instanceof List)
return ((List<?>) parentElement).toArray();
if (parentElement instanceof City)
return ((City) parentElement).getStreets();
if (parentElement instanceof Street)
return ((Street) parentElement).getHouses();
return new Object[0];
}

public Object getParent(Object element) {
if (element instanceof Street)
return ((Street) element).city;
if (element instanceof House)
return ((House) element).street;
return null;
}

public boolean hasChildren(Object element) {
if (element instanceof List)
return ((List<?>) element).size() > 0;
if (element instanceof City)
return ((City) element).getStreets().length > 0;
if (element instanceof Street)
return ((Street) element).getHouses().length > 0;
return false;
}

public Object[] getElements(Object cities) {
return getChildren(cities);
}

public void dispose() {
}

public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
}
}

当我尝试运行此程序时,出现此错误 -

    !ENTRY org.eclipse.e4.ui.workbench 4 0 2015-08-27 10:10:25.121
!MESSAGE
!STACK 0
org.eclipse.core.runtime.AssertionFailedException: assertion failed:
at org.eclipse.core.runtime.Assert.isTrue(Assert.java:110)
at org.eclipse.core.runtime.Assert.isTrue(Assert.java:96)
at org.eclipse.jface.viewers.AbstractTreeViewer.assertContentProviderType(AbstractTreeViewer.java:2385)
at org.eclipse.jface.viewers.TreeViewer.assertContentProviderType(TreeViewer.java:345)...

可能的原因是什么?

编辑:当我在 View 类中编写 AddressContentProvider 类时,它工作得很好。但是,我在其他文件中编写此类,但它不起作用:(

最佳答案

树的内容提供程序必须实现 ITreeContentProviderIContentProvider 是不够的。

尽管您已经实现了树内容提供程序的方法,但您实际上必须声明该类实现了 ITreeContentProvider

关于java - org.eclipse.core.runtime.AssertionFailedException : assertion failed: in TreeViewer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32244177/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com