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