java - SWT:不再有控制 handle

标签 java swt

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

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

有什么办法可以解决这个问题吗?

最佳答案

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

如果您使用的是从 Resource 派生的 SWT 类(ColorFontImage Cursor, ....),那么当您处理完该对象后,您必须调用该对象的dispose。如果不这样做将会泄漏句柄。

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

JFace 提供了可能有用的管理器类,例如 ColorRegistryFontRegistryImageRegistry

如果这还不够,您将减少如此大量的控件,也许您可​​以使用弹出对话框在按下按钮时显示一些信息。

关于java - SWT:不再有控制 handle ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37851205/

相关文章:

java - 我应该怎么称呼这个小部件?

java - MySQL 数据库未从 Java 更新

java - 如何绘制表示连接节点图的树?

java - 列出 Tibco EMS 中的所有 JMS 队列

java - 为什么欧元符号打印为Ôé⁄?

java - 当我们在使用 swt 的 eclipse 插件开发中按下最大化按钮时,复合 Material 的宽度会发生变化

label - 获取带有自动换行的 SWT 标签的大小

java - 如何在不关闭前一个 shell 的情况下打开弹出 shell

java - 尝试在 Java 的 ArrayList 实现中查找唯一元素。 getUnique 方法

Google Apps Engine 上的 Java 与 Python