java - 无法刷新 jface 表查看器

标签 java eclipse swt jface

我构建了一个表格查看器,并在其上设置了以下方法:

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/

相关文章:

eclipse - eclipse 中未绑定(bind)类路径容器错误?

java - 如何将焦点设置在 SWT MessageDialog 或 MessageBox 中的文本而不是按钮上?

java - 如何使用此 makefile 以及 src/和 bin/中的文件正确生成 java jar 文件

java - CustomTabsIntent launchUrl 抛出 SecurityException - 权限拒绝

java - 正则表达式多行html代码?

java - Nifi 在 ExecuteScript 中遇到错误

Java Eclipse SVN - 提交

java - mp3 转换 |在单独的线程上播放(mp3)

java - 去掉 SWT ComboBoxCellEditor 中的多余行吗?

java - 无法在 32 位 JVM 上加载 64 位 SWT 库(替换 SWT 文件)