java-imageJ插件参数
作者:互联网
您好,我正在尝试将参数传递给ImageJ插件.但是,无论我通过什么,程序都将参数字符串视为空.我在互联网上找不到有关该问题的任何文档.
我的Java插件看起来像这样,并且可以正常编译.
import ij.plugin.PlugIn;
public class Test implements PlugIn {
public void run(String args) {
IJ.log("Starting plugin Test");
IJ.log("args: ." + args + ".");
}
}
我进行编译,制作一个.jar文件,并将其放入ImageJ plugins文件夹中.
我可以使用ImageJ userInterface(插件>分段>测试)来调用它,宏记录器将使用的命令放入:
run("Test");
然后执行我的代码,按预期方式弹出日志窗口:
Starting plugin Test
args: ..
我可以在.ijm文件中手动运行相同的命令,并获得相同的结果.
但是,当我运行以下宏命令时:
run("Test", "my_string");
我在日志窗口中得到了相同的结果:
Starting plugin Test
args: .. // <- I would like to get "my_string" passed there
它应该显示在什么地方(至少我期望它做什么)
Starting plugin Test
args: .my_string.
所以我的问题是:如何将参数传递给PlugIn,尤其是如何访问它们?
非常感谢
编辑
嘿,我找到了一种绕过该方法的方法:
使用Macro.getOptions():此方法将检索传入参数的字符串到插件.
但是,我仍然找不到传递超过1个字符串参数的方法.我尝试重载PlugIn.run()方法,但是它根本不起作用.
我的快速解决方案是将所有参数放在1个字符串中,并用空格分隔.然后我分割了这个字符串:
String [] arguments = Macro.getOptions().split(" ");
我看不到一种更方便的解决方法.我不敢相信这种情况有多么愚蠢.
请,如果您有更好的解决方案,请随时分享!谢谢
解决方法:
您将ij.plugin.Plugin
中的run(String arg)方法与ImageJ宏命令run("command"\[, "options"\])
(调用IJ.run(String command, String options)
)相混淆.
在ij.plugin.Plugin#run(String arg)
的文档中,它说:
This method is called when the plugin is loaded. ‘arg’, which may be blank, is the argument specified for this plugin in IJ_Props.txt.
因此,arg是一个可选参数,您可以在插件的IJ_Props.txt
或plugins.config
文件中使用arg,以将不同的菜单命令分配给插件的不同功能(另请参见excellent documentation on the Fiji wiki).
要在从宏代码运行插件时使用options参数,应使用GenericDialog
来获取选项,或者(如您所知,这很困难)使用了辅助功能Macro.getOptions()
.
标签:macros,imagej,plugins,java 来源: https://codeday.me/bug/20191029/1962519.html