2014-09-05 63 views
1

我想写一个宏来保存首选项,并在关闭并重新打开ImageJ后读取它们。prefs.get问题和设置ImageJ宏

保存工作,但宏不读取文件。此外,当我尝试使用这两行中的一行时,发生变量“Prefs”未知的错误。

int myNumber = Prefs.get("my.persistent.number", 0); 

Prefs.savePreferences(); 

我在做什么错?请帮助我:-)

+0

你确定你在谈论[ImageJ宏语言](http://imagej.nih.gov/ij/developer/macro/functions.html)吗?你的代码看起来更像Java代码。 – 2014-09-05 16:14:07

+0

是啊我敢肯定,发现它在教程和以下链接http://imagej.1557.x6.nabble.com/Making-a-panel-of-buttons-in-a-macro-plugin-td3692757.html http://imagej.1557.x6.nabble.com/Re-How-to-save-macro-variables-values-in-a-text-file-td5001804.html正如我所说的,保存偏好有效,但不是检索。甚至不是当我尝试调用(“ij.Prefs.get”,“myVariableKey”,“defaultValue”); – Nathalie 2014-09-05 16:24:00

+0

“保存偏好作品”是什么意思?你是怎么检查的? – 2014-09-06 11:28:40

回答

3

ImageJ宏语言本身不支持存储自定义首选项。 (只有一组内置选项(可通过编辑>菜单中的选项访问)可以是saved,restoredadjusted。)您需要通过call("ij.Prefs.get", "my.persistent.number", "0");来调用Java类。

  • 在向上最新斐济/ ImageJ的安装下面的ImageJ宏工作:
myNumber = call("ij.Prefs.get", "my.persistent.number", "0"); 
print(myNumber); 
call("ij.Prefs.set", "my.persistent.number", 3); 

在第一次运行,它打印0;以后的每一次运行都会打印3;重新启动斐济后,它将再次打印3。如果更新到最新版本后仍无法使用,请通过帮助>报告错误报告错误,该错误还会向开发者提交有关安装的重要信息,以帮助他们解决问题。

  • 使用许多scripting languages之一但是,您可以直接访问ij.Prefs Java类,因为你正在试图做到这一点。在使用它之前,请不要忘记导入。这是一个例子的Javascript:
importClass(Packages.ij.Prefs); 

myNumber = Prefs.get("my.persistent.number", 0); 
Prefs.set("my.persistent.number", myNumber); 

希望有所帮助。

+0

谢谢,复制了Import类,我的错了。 importClass - udefined标识符....和“prefs”仍然是未知的变量。 – Nathalie 2014-09-05 16:44:53

+0

我编辑了我的答案以澄清情况,无论您使用宏语言(第一选项)还是使用Javascript(第二选项)。 – 2014-09-06 11:28:04

+0

谢谢你现在的作品:-) – Nathalie 2014-09-08 17:33:15