首选项页面的实现主要是 SWT 代码。SWT 代码用来创建首选项页面控件、设置控件的值以及检索控件的值。org.eclipse.jface.preference 包提供了 helper 类,称为 字段编辑器,它创建窗口小部件,并为最常见的首选项类型实现值设置和检索代码。平台提供了字段编辑器来显示和更新许多值类型,包括布尔值、颜色、字符串、整数、字体和文件名。
FieldEditorPreferencePage 实现一个页面,它使用这些字段编辑器来显示和存储该页面上的首选项值。FieldEditorPreferencePage 子类创建字段编辑器来显示内容,而不是创建 SWT 控件来填充它的内容。该页面上的所有字段都必须作为字段编辑器来实现。以下是调试用户界面首选项页面中的代码段:
protected void createFieldEditors() { addField(new BooleanFieldEditor(IDebugUIConstants.PREF_BUILD_BEFORE_LAUNCH, DebugPreferencesMessages.getString("DebugPreferencePage.auto_build_before_launch"), SWT.NONE, getFieldEditorParent())); ... String[][] perspectiveNamesAndIds = getPerspectiveNamesAndIds(); addField(new ComboFieldEditor(IDebugUIConstants.PREF_SHOW_DEBUG_PERSPECTIVE_DEFAULT, DebugPreferencesMessages.getString("DebugPreferencePage.Default_perspective_for_Debug_2"), //$NON-NLS-1$ perspectiveNamesAndIds, getFieldEditorParent())); ... }
对每个字段编辑器指定其相应的首选项键的名称以及它将创建的 SWT 控件的文本标签。所创建的控件的种类取决于字段编辑器的类型。例如,布尔字段编辑器将创建复选框。
由于首选项页面与首选项库(这是在 doGetPreferenceStore 方法中指定的)相关联,因此,用于存储当前值的代码、用于通过首选项库初始化控件值的代码以及将控件恢复为其缺省值的代码都是在 FieldEditorPreferencePage 中实现的。
FieldEditorPreferencePage 将把网格布局与一列配合使用来作为字段编辑器窗口小部件的缺省布局。为了满足特殊的布局要求,可以重设 createContents 方法。