我知道还有其他几个线程在讨论 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 列的表格。