简体   繁体   English

无法刷新jface表查看器

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM