[英]Not able to refresh the jface table viewer
I have built a table viewer, and i have set the following methods on it: 我建立了一个表格查看器,并在其上设置了以下方法:
viewer.setContentProvider(new SampleContentProvider());
viewer.setLabelProvider(new SampleLabelProvider());
viewer.setInput(object);
SampleContentProvider implements IStructeredContentProvider SampleContentProvider实现IStructeredContentProvider
and 和
SampleLabelProvider implements ILabelProvider SampleLabelProvider实现ILabelProvider
I get the following exception when the viewer is refreshed after modify action on a table item: 在对表项执行修改操作后刷新查看器时,出现以下异常:
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)
I have debugged SampleContentProvider's getElements , it is returning an array of objects ... 我已经调试了SampleContentProvider的getElements,它正在返回对象数组...
I have no clue why this refresh call on the viewer occassionally causes this exception and therefore not updating the table with modified content. 我不知道为什么查看器上的此刷新调用偶尔会导致此异常,因此不使用已修改的内容更新表。
The failure is caused by TableItem.getData()
returning null
which is not allowed. 失败是由于TableItem.getData()
返回null
所导致的,而null
不允许。
When you use TableViewer
to manage a table you must not manipulate the TableItem
objects directly, TableViewer
is in charge of these and changing them will lead to failures. 当您使用TableViewer
管理表时,一定不要直接操作TableItem
对象, TableViewer
负责这些对象,更改它们将导致失败。
To sort a table use the TableViewer.setComparator
call to supply a class based on ViewerComparator
which sorts the objects in your data model. 要对表进行排序,请使用TableViewer.setComparator
调用提供基于ViewerComparator
的类,该类对数据模型中的对象进行排序。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.