我面临Java swt的问题。在我的RCP应用程序中,我运行一个线程,该线程每次启动时都会清除一个表,以便它可以再次显示列表中的元素。新列表已更新。

问题是当我运行线程时,uploadInformationTab.removeAll()uploadInformationtab.clearAll()删除|清除所有项目,但我设置了TableEditor progressBarEditor=new TableEditor(uploadInformationTab)TableEditor checkBoxEditor=new TableEditor(uploadInformationTab)的项目除外。

我找不到解决此问题的方法。

我希望我的问题很清楚。

最佳答案

在表中设置新值时,可能需要处置已设置的所有编辑器。就像是:

Control oldEditor = progressBarEditor.getEditor();
if (oldEditor != null) oldEditor.dispose();

oldEditor = checkBoxEditor.getEditor();
if (oldEditor != null) oldEditor.dispose();


注意:如果这是Eclipse RCP,则可以使用更易于使用的JFace TableViewerEditingSupport

更新:

Table.clearAll()只是清除表中所有行的文本和图标。它使行数保持不变。 Table.removeAll()将该表设置为空,从而完全删除所有现有行。

10-06 02:16