我正在学习如何使用FontRegistry及其工作方式。
目前,我有一个集中化的类(FontUtils),它在启动时加载所有字体数据,如下所示:

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


稍后在我的程序中,我将使用以下代码:

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


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

Fore实例使用一个变量来计算使用字体的资源数量,如果它是0,则丢弃该字体?

因为我将对ImageRegistry执行相同的操作,所以我的行为是相同的,对吗?

最佳答案

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

JavaDoc说:


  字体注册表拥有向其注册的所有字体对象,并且
  当SWT显示器创建
  字体被处置。因此,客户不需要(实际上,
  不得尝试)处置字体对象本身。


这是使用disposeExecDisplay方法完成的。

ImageRegistry相同:


  图像注册表拥有向其注册的所有图像对象,
  并在创建SWT显示器时自动处理它们
  图像被处理。因此,客户不需要
  (实际上,不得尝试)自行处理这些图像。


如果您想更早处置图像,ImageRegistry也具有dispose方法。

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

09-26 11:24