我知道还有其他一些主题在SWT上讨论No More Handles错误,例如SWT No More Handles。
但是,当我使用ColumnLabelProvider
TableViewer
使用ColumnLabelProvider.getImage()
方法为表的每个列提供图像时,我遇到了一个问题。
当我加载包含大量数据的表(例如,8000列)时,会出现问题。
我将不同的图像(在我的情况下只有两个)实例化为包含TableViewer
的View类的静态属性,以避免同一图像的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列图标的表格。