【问题标题】:FontRegistry and Dispose in SWT (JFace)SWT 中的 FontRegistry 和 Dispose (JFace)
【发布时间】:2017-09-24 10:11:53
【问题描述】:

我正在学习如何使用 FontRegistry 及其工作原理。 目前我有一个集中的类(FontUtils),它在启动时会像这样加载所有字体数据:

fontRegistry.put("small",new FontData[]{new FontData("Tahoma",8, SWT.BOLD)});

稍后在我的程序中我使用这个:

gc.setFont(FontUtils.getFont("small"));

我想知道是否必须处理在 FontUtils 中创建的字体,因为每次创建字体时都应该根据文档进行处理。 但是 FontRegistry 对字体的创建一无所知,实际上它没有一个名为 dispose 的方法。 我必须自己处理处置吗?

Fore 实例使用一个变量来计算有多少资源正在使用该字体,如果为 0 则处置该字体?

因为我要对 ImageRegistry 做同样的事情,所以行为是一样的,对吧?

【问题讨论】:

    标签: java swt jface


    【解决方案1】:

    FontRegistry 管理其拥有的所有字体并处理它们的处置。

    JavaDoc 说:

    字体注册拥有所有向它注册的字体对象,并且 当创建 字体被处理。因此,客户不需要(实际上, 不得尝试)自行处理字体对象。

    这是使用DisplaydisposeExec 方法完成的。

    ImageRegistry 是一样的:

    图像注册拥有所有注册的图像对象, 并在创建的 SWT Display 时自动处理它们 图像被处理。因此,客户不需要 (实际上,绝不能试图)自行处理这些图像。

    ImageRegistry 也有一个 dispose 方法,如果你想更早地处理图像。

    注意:可以使用您自己的ResourceManager 创建ImageRegistry,在这种情况下,由资源经理安排处置。

    【讨论】:

      猜你喜欢
      • 2010-10-10
      • 2011-04-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-28
      • 2010-12-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多