Java 如何从首选项页面获取文件路径,并通过工作台上的按钮在控制台上打印输出?

Java 如何从首选项页面获取文件路径,并通过工作台上的按钮在控制台上打印输出?,java,eclipse,Java,Eclipse,我制作了一个首选页面,其编程为: public class SAML extends FieldEditorPreferencePage implements IWorkbenchPreferencePage { public SAML() { super(GRID); setPreferenceStore(RmpPlugin.getDefault().getPreferenceStore()); setDescription("Browse Appropriate f

我制作了一个首选页面,其编程为:

public class SAML
extends FieldEditorPreferencePage
implements IWorkbenchPreferencePage {

public SAML() {
    super(GRID);
    setPreferenceStore(RmpPlugin.getDefault().getPreferenceStore());
    setDescription("Browse Appropriate files");
}

public FileFieldEditor f;
public FileFieldEditor f1;
public void createFieldEditors() {
    f=new FileFieldEditor(PreferenceConstants.P_PATH, 
            "&Prism.bat File:", getFieldEditorParent());
    addField(f);

    f1=new FileFieldEditor(PreferenceConstants.P_PATH1, 
            "&NuSMV Application File:", getFieldEditorParent());
    addField(f1);
}
我想获得
FileFieldEditor f
的路径,并希望该路径在嵌入工作台的按钮上运行(但该按钮的编程在同一工作区的不同项目中)。 具有“prism.bat”文件硬编码路径的按钮编程为:

但我想从我的首选项页面
FileFieldEditor f
获取文件,并希望此路径嵌入到按钮编程中,以便在按下按钮时显示结果。

您需要两个部分:

  • 初始化首选项默认值的代码
  • 使用当前值的代码
要设置默认值,请在激活器中使用以下代码:

public class Activator extends AbstractUIPlugin {
    @Override
    public void start(BundleContext context) throws Exception {
        super.start(context);
        IPreferenceStore ps = getPreferenceStore();
        ps.setDefault(SHOW_IMAGE, true);
    }
    public static final String SHOW_IMAGE = "showImage";
}
或者,您可以使用
org.eclipse.core.runtime.preferences
扩展点

请注意,上面的代码假设首选项的类型是
布尔值
-还有其他方法用于数字、字符串等。。。文件名是一个字符串

要使用当前值,只需使用

if (Activator.getDefault().getPreferenceStore().getBoolean(Activator.SHOW_IMAGE)) {
    …
}

以下内容包含更多信息…

您不能做什么?你有你的
FileFieldEditor
,你有你的带有硬编码路径的代码,听起来你只是想用
FileFieldEditor
中的内容替换硬编码路径。因此,您只需将对
FileFieldEditor
的引用传递给带有.bat文件路径的代码。@BalusC-非常感谢:)@BalusC-但在我的按钮编程中,我无法访问FileFieldEditor。请让我知道如何从FileFieldEditor访问路径,并将其作为ProcessBuilder.Madesn的输入-感谢您的回复。感谢您的回复。但当我在activator类中使用此代码时,每次打开首选项页面时,它都不会打开,并显示无法创建首选项页面的错误。此外,请告诉我第二个代码应该在哪里使用?我应该在按钮编程中使用它吗?或者其他地方..我需要更多的上下文来帮助您处理首选项页面的例外情况。第二个代码片段用于
按钮
,然后使用
getString(…)
而不是
getBoolean(…)
@madsen-谢谢您的回复。请检查我回答的以下上下文。谢谢你…谢谢你的回复。请检查我回答的以下上下文。非常感谢。
if (Activator.getDefault().getPreferenceStore().getBoolean(Activator.SHOW_IMAGE)) {
    …
}