天天看點

PreferencePage的小問題花了大把時間

在Eclipse裡可以用FieldEditorPreferencePage簡化Preference page的建立,但在随機文檔裡隻重點說了要實作createFieldEditors方法,我明明實作了它,但點Preference指令時卻總是提示:

PreferencePage的小問題花了大把時間

java.lang.InstantiationException: org.haree.mobject.ui.BasicPreferencePage 

PreferencePage的小問題花了大把時間

    at java.lang.Class.newInstance0(Unknown Source) 

PreferencePage的小問題花了大把時間

    at java.lang.Class.newInstance(Unknown Source) 

PreferencePage的小問題花了大把時間

    at org.eclipse.core.internal.registry.ConfigurationElement.createExecutableExtension(ConfigurationElement.java:141) 

PreferencePage的小問題花了大把時間

    at org.eclipse.core.internal.registry.ConfigurationElement.createExecutableExtension(ConfigurationElement.java:124) 

PreferencePage的小問題花了大把時間

    at org.eclipse.core.internal.registry.ConfigurationElement.createExecutableExtension(ConfigurationElement.java:113) 

PreferencePage的小問題花了大把時間

    at org.eclipse.ui.internal.WorkbenchPlugin.createExtension(WorkbenchPlugin.java:189) 

PreferencePage的小問題花了大把時間

    at org.eclipse.ui.internal.dialogs.WorkbenchPreferenceNode.createPage(WorkbenchPreferenceNode.java:60) 

PreferencePage的小問題花了大把時間

    at org.eclipse.jface.preference.PreferenceDialog.showPage(PreferenceDialog.java:985) 

PreferencePage的小問題花了大把時間

    at org.eclipse.jface.preference.PreferenceDialog$8.selectionChanged(PreferenceDialog.java:529) 

PreferencePage的小問題花了大把時間

    at org.eclipse.jface.viewers.StructuredViewer$3.run(StructuredViewer.java:450) 

PreferencePage的小問題花了大把時間

    at org.eclipse.core.internal.runtime.InternalPlatform.run(InternalPlatform.java:616) 

PreferencePage的小問題花了大把時間

    at org.eclipse.core.runtime.Platform.run(Platform.java:747) 

PreferencePage的小問題花了大把時間

    at org.eclipse.jface.viewers.StructuredViewer.firePostSelectionChanged(StructuredViewer.java:448) 

PreferencePage的小問題花了大把時間

    at org.eclipse.jface.viewers.StructuredViewer.setSelection(StructuredViewer.java:1094) 

PreferencePage的小問題花了大把時間

    at org.eclipse.jface.preference.PreferenceDialog.selectSavedItem(PreferenceDialog.java:807) 

PreferencePage的小問題花了大把時間

    at org.eclipse.jface.preference.PreferenceDialog$3.run(PreferenceDialog.java:309) 

PreferencePage的小問題花了大把時間

    at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:69) 

PreferencePage的小問題花了大把時間

    at org.eclipse.jface.preference.PreferenceDialog.createContents(PreferenceDialog.java:305) 

PreferencePage的小問題花了大把時間

    at org.eclipse.jface.window.Window.create(Window.java:348) 

PreferencePage的小問題花了大把時間

    at org.eclipse.jface.dialogs.Dialog.create(Dialog.java:925) 

PreferencePage的小問題花了大把時間

    at org.eclipse.ui.internal.OpenPreferencesAction.run(OpenPreferencesAction.java:70) 

PreferencePage的小問題花了大把時間

    at org.eclipse.jface.action.Action.runWithEvent(Action.java:881) 

PreferencePage的小問題花了大把時間

    at org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:915) 

PreferencePage的小問題花了大把時間

    at org.eclipse.jface.action.ActionContributionItem.access$2(ActionContributionItem.java:866) 

PreferencePage的小問題花了大把時間

    at org.eclipse.jface.action.ActionContributionItem$7.handleEvent(ActionContributionItem.java:785) 

PreferencePage的小問題花了大把時間

    at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:82) 

PreferencePage的小問題花了大把時間

    at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:796) 

PreferencePage的小問題花了大把時間

    at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:2772) 

PreferencePage的小問題花了大把時間

    at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:2431) 

PreferencePage的小問題花了大把時間
PreferencePage的小問題花了大把時間

找了一個多小時,才發現原來是要提供一個沒有參數的構造方法才可以。想了一下,可能因為Eclipse最終是使用Class.newInstance()的方式來生成界面元素的,是以有這個要求。

算是一個經驗吧,我覺得Eclipse的幫助再豐富些就好了,特别是應該提供更多的例子代碼。

順便推薦下面兩篇文章(要是Eclipse幫助都這麼詳細該多好):

<a href="http://www.eclipse.org/articles/Article-Mutatis-mutandis/overlay-pages.html">Mutatis mutandis - Using Preference Pages as Property Pages</a>

<a href="http://www.eclipse.org/articles/Article-Field-Editors/field_editors.html">Simplifying Preference Pages with Field Editors</a>

繼續閱讀