我构建了一个表查看器,并在上面设置了以下方法:
viewer.setContentProvider(new SampleContentProvider());
viewer.setLabelProvider(new SampleLabelProvider());
viewer.setInput(object);SampleContentProvider实现IStructeredContentProvider
和
SampleLabelProvider实现ILabelProvider
在对表项进行修改操作后刷新查看器时,我会得到以下异常:
org.eclipse.core.runtime.AssertionFailedException: null argument:
at org.eclipse.core.runtime.Assert.isNotNull(Assert.java:85)
at org.eclipse.core.runtime.Assert.isNotNull(Assert.java:73)
at org.eclipse.jface.viewers.StructuredViewer.disassociate(StructuredViewer.java:640)
at org.eclipse.jface.viewers.AbstractTableViewer.internalRefreshAll(AbstractTableViewer.java:727)
at org.eclipse.jface.viewers.AbstractTableViewer.internalRefresh(AbstractTableViewer.java:649)
at org.eclipse.jface.viewers.AbstractTableViewer.internalRefresh(AbstractTableViewer.java:636)
at org.eclipse.jface.viewers.StructuredViewer$7.run(StructuredViewer.java:1487)
at org.eclipse.jface.viewers.StructuredViewer.preservingSelection(StructuredViewer.java:1422)
at org.eclipse.jface.viewers.StructuredViewer.preservingSelection(StructuredViewer.java:1383)
at org.eclipse.jface.viewers.StructuredViewer.refresh(StructuredViewer.java:1485)
at org.eclipse.jface.viewers.ColumnViewer.refresh(ColumnViewer.java:537)
at org.eclipse.jface.viewers.StructuredViewer.refresh(StructuredViewer.java:1444)我已经调试了SampleContentProvider的getElements,它正在返回一个对象数组.
我不知道为什么这个对查看器的刷新调用有时会导致这个异常,因此不会用修改过的内容更新表。
发布于 2014-10-02 07:56:12
失败是由TableItem.getData()返回不允许的null造成的。
当您使用TableViewer来管理一个表时,您不能直接操作TableItem对象,TableViewer负责管理这些对象,而更改这些对象将导致失败。
要对表进行排序,使用TableViewer.setComparator调用提供一个基于ViewerComparator的类,该类对数据模型中的对象进行排序。
https://stackoverflow.com/questions/26155691
复制相似问题