kal*_*gne 4 java macros plugins 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 + ".");
}
}
Run Code Online (Sandbox Code Playgroud)
我编译,制作一个 .jar 文件并将其放入 ImageJ 插件文件夹中。我可以使用 ImageJ userInterface (Plugin>Segmentation>Test) 调用它,宏记录器将使用以下命令:
run("Test");
Run Code Online (Sandbox Code Playgroud)
然后执行我的代码,按预期弹出日志窗口:
Starting plugin Test
args: ..
Run Code Online (Sandbox Code Playgroud)
我可以在 .ijm 文件中手动运行相同的命令,并获得相同的结果。但是,当我运行以下宏命令时:
run("Test", "my_string");
Run Code Online (Sandbox Code Playgroud)
我在日志窗口中得到相同的结果:
Starting plugin Test
args: .. // <- I would like to get "my_string" passed there
Run Code Online (Sandbox Code Playgroud)
它应该显示在哪里(至少我期望它做什么)
Starting plugin Test
args: .my_string.
Run Code Online (Sandbox Code Playgroud)
所以我的问题是:如何将参数传递给 PlugIn,尤其是如何访问它们?非常感谢
编辑
嘿,我找到了一种绕过方法:
使用 Macro.getOptions() :此方法将检索传递给插件的参数的字符串。但是,我仍然找不到传递超过 1 个字符串参数的方法。我尝试重载 PlugIn.run() 方法,但它根本不起作用。
我的快速解决方法是将所有参数放在 1 个字符串中,并用空格分隔它们。然后我拆分这个字符串:
String [] arguments = Macro.getOptions().split(" ");
Run Code Online (Sandbox Code Playgroud)
我没有看到更方便的方法来解决这个问题。我无法相信这种情况是多么愚蠢。
如果您有更好的解决方案,请随时分享!谢谢
您将run(String arg)方法ij.plugin.Plugin与 ImageJ 宏命令混淆run("command"\[, "options"\]),后者调用IJ.run(String command, String options).
在 的文档中ij.plugin.Plugin#run(String arg),它说:
加载插件时调用此方法。'arg' 可能为空,是在 IJ_Props.txt 中为此插件指定的参数。
所以,arg是一个可选参数,您可以在插件文件中IJ_Props.txt或在plugins.config插件文件中使用它来为插件的不同功能分配不同的菜单命令(另请参阅斐济维基上的优秀文档)。
要options在从宏代码运行插件时使用该参数,您应该使用 aGenericDialog来获取选项,或者(正如您显然学到的那样)使用辅助函数Macro.getOptions()。
| 归档时间: |
|
| 查看次数: |
1859 次 |
| 最近记录: |