编程语言
首页 > 编程语言> > java-imageJ插件参数

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.txtplugins.config文件中使用arg,以将不同的菜单命令分配给插件的不同功能(另请参见excellent documentation on the Fiji wiki).

要在从宏代码运行插件时使用options参数,应使用GenericDialog来获取选项,或者(如您所知,这很困难)使用了辅助功能Macro.getOptions().

标签:macros,imagej,plugins,java
来源: https://codeday.me/bug/20191029/1962519.html