有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java SWT:不再有控制句柄

使用eclipse,我为我的应用程序创建了一个带有两个选项卡的表单编辑器。一个选项卡用于GUI支持,另一个用于普通文本编辑器。在GUI页面中,我使用了数百个SWT控件,如表、节、按钮等

问题是,当我在应用程序中使用表单编辑器打开20多个文件时,我得到一个异常“SWT:不再有句柄”。我可以理解,对于要在表单编辑器中创建的控件,没有更多的控件句柄。我可以检查控制手柄的可用性,然后继续打开文件,如果有足够的手柄可用。否则我无法打开文件本身

有什么可能的办法解决这个问题吗


共 (1) 个答案

  1. # 1 楼答案

    你很可能已经达到了极限。请注意,不同平台(macOS、Linux、Windows)的句柄数量差异很大,因此如果计划在不同的平台上运行,则需要在所有平台上进行测试

    如果您使用的是从ResourceColorFontImageCursor,…)派生的SWT类然后在处理完对象后,必须对其调用dispose。否则会导致手柄泄漏

    您还应该尝试共享这些资源——例如,不要每次都创建一个新的Color。使用管理器类来处理颜色共享,管理器类还可以处理资源的处理

    JFace提供了ColorRegistryFontRegistryImageRegistry等可能有用的管理器类

    如果这还不够,你需要减少这么多的控件,也许你可以在按下按钮时使用弹出对话框来显示一些信息