使用eclipse,我为我的应用程序创建了一个带有2个选项卡的表单编辑器。一个选项卡用于GUI支持,另一个选项卡用于普通文本编辑器。在GUI页面中,我一直在使用数百个SWT控件,如表格,部分,按钮等。
问题是当我在我的应用程序中使用表单编辑器打开超过20个文件时,我得到一个例外“SWT:没有更多句柄”。我可以理解,没有更多的控件句柄可以为表单编辑器创建控件。如果有足够的句柄,我可以检查控制句柄的可用性并继续打开文件。否则我无法打开文件本身。
有没有办法解决这个问题?
答案 0 :(得分:1)
你可能已达到极限。请注意,平台(macOS,Linux,Windows)之间的句柄数量差异很大,因此如果您打算在不同的平台上运行它,则需要对所有平台进行测试。
如果您使用的是来自Resource
(Color
,Font
,Image
,Cursor
,....)的SWT课程,那么您必须致电完成后对象上的dispose
。如果不这样做会泄漏处理。
您还应尝试共享这些资源 - 例如,不要每次都创建新的Color
。使用处理共享颜色的管理器类,管理器类也可以处理资源的处理。
JFace提供可能有用的ColorRegistry
,FontRegistry
和ImageRegistry
等经理类。
如果这还不够,你可以减少这么多的控件,也许你可以使用弹出对话框来显示按下按钮时的一些信息。