0

我知道还有其他几个线程在讨论 SWT 关于 No More Handles 错误,例如SWT No More Handles

ColumnLabelProvider但是,当我使用 a for a使用该方法TableViewer为表的每个列提供图像时,我遇到了一个问题。ColumnLabelProvider.getImage()

当我加载包含大量数据(例如,8000 列)的表时,就会出现问题。

我将不同的图像(在我的例子中只有两个)实例化为包含 的 View 类的静态属性,TableViewer以避免同一图像的 8000 个实例:

private static Image FAILURE_IMAGE = UIPlugin.imageDescriptorFromPlugin(
        Activator.PLUGIN_ID, "/icons/failure.gif").createImage();

/** {@link Image} used to display a test case as run successfully. */
private static Image OK_IMAGE = UIPlugin.imageDescriptorFromPlugin(
        Activator.PLUGIN_ID, "/icons/ok.gif").createImage();

在 ColumnLabelProvider 我只是返回这些图像:

public Image getImage(Object element) {
    if (ok)
        return FAILURE_IMAGE;
    else
        return OK_IMAGE;
}

但是,我收到 No More Handles 错误。

我做错什么了吗?将图像创建为静态字段的代码是错误的还是错误的?SWT 不应该能够显示带有图标的 8000 列的表格。

4

0 回答 0