【问题标题】:Remove SWT TableEditor删除 SWT 表格编辑器
【发布时间】:2017-04-23 18:44:15
【问题描述】:

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

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

我找不到这个问题的解决方案。

我希望我的问题足够清楚。

【问题讨论】:

    标签: java swt editor


    【解决方案1】:

    在表中设置新值时,您可能需要处理已设置的任何编辑器。比如:

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

    注意:如果这是一个 Eclipse RCP,您可以使用更容易使用的 JFace TableViewer 和 EditingSupport。

    更新:

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

    【讨论】:

    • 好的,我会试试这个,让你知道。我将在 run(){} 中编写此代码? clear() 和 remove() 之间最好的解决方案是什么?
    • @IsmailSen 更新答案
    • 将 dipose() 放在哪里?在 run() 之后它返回 NullPointerException 并且在创建编辑器之后从不显示它。
    • 现在,我有这个错误:Widget is dispose。我使用进度条来显示文件的上传进度。所以我有一个绘制进度条的监听器......对于一个文件,处理工作正常,但是当文件时,它返回:org.eclipse.swt.SWTException: Widget is disposed
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-08
    相关资源
    最近更新 更多