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)) {
…
}