我正在学习如何使用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显示器创建
字体被处置。因此,客户不需要(实际上,
不得尝试)处置字体对象本身。
这是使用disposeExec
的Display
方法完成的。ImageRegistry
相同:
图像注册表拥有向其注册的所有图像对象,
并在创建SWT显示器时自动处理它们
图像被处理。因此,客户不需要
(实际上,不得尝试)自行处理这些图像。
如果您想更早处置图像,ImageRegistry
也具有dispose
方法。
注意:可以使用您自己的ImageRegistry
创建ResourceManager
,在这种情况下,由资源管理器来安排处置。