我构建了一个表格查看器,并在其上设置了以下方法:
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 ,它返回一个对象数组...
我不知道为什么查看器上的刷新调用偶尔会导致此异常,因此不会使用修改后的内容更新表格。
最佳答案
失败是由于 TableItem.getData()
返回 null
引起的,这是不允许的。
当您使用TableViewer
来管理表格时,您不能直接操作TableItem
对象,TableViewer
负责这些并更改它们将导致失败。
要对表进行排序,请使用 TableViewer.setComparator
调用来提供一个基于 ViewerComparator
的类,该类对数据模型中的对象进行排序。
关于java - 无法刷新 jface 表查看器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26155691/