【问题标题】:ImageJ GenericDialog - String containing backslashes is not escaped when recording macroImageJ GenericDialog - 录制宏时不转义包含反斜杠的字符串
【发布时间】:2013-06-13 16:12:36
【问题描述】:

我正在开发一个 ImageJ 插件,但遇到了这个问题。

我正在使用带有文本字段的GenericDialog,以便用户可以输入文件的文件系统路径。在 Windows 上,路径包含反斜杠。当我为这个插件录制宏时,我得到了这个结果:

run("Example ", "path=C:\results.txt");

反斜杠没有转义,当我尝试运行记录的命令时,反斜杠被解释为转义字符,显然找不到文件。

有没有办法以正确记录包含反斜杠的文本字段的方式使用GenericDialog?或者我不能使用GenericDialog,必须自己实现宏录制功能?

编辑: 有问题的示例插件:

import ij.IJ;
import ij.ImagePlus;
import ij.gui.GenericDialog;
import ij.plugin.filter.ExtendedPlugInFilter;
import ij.plugin.filter.PlugInFilter;
import ij.plugin.filter.PlugInFilterRunner;
import ij.process.ImageProcessor;

public class Example_ implements ExtendedPlugInFilter {

  public int showDialog(ImagePlus imp, String command, PlugInFilterRunner pfr) {
    GenericDialog gd = new GenericDialog("Example");
    gd.addStringField("path", "C:\\results.txt");
    gd.showDialog();

    String path = gd.getNextString();
    IJ.showMessage("path = " + path);
    return PlugInFilter.DONE;
  }

  public void setNPasses(int nPasses) {
  }

  public int setup(String arg, ImagePlus imp) {
    return PlugInFilter.NO_IMAGE_REQUIRED;
  }

  public void run(ImageProcessor ip) {
  }
}

当我运行从这个插件录制的宏时,它显示“path = C:esults.txt”。

【问题讨论】:

  • 这显然是宏记录器中的一个错误。如果您向ImageJ mailing list 报告此问题,很有可能会很快得到解决。
  • 使用最新版本的 Fiji (ImageJ 1.47s),当我运行命令 File > Import > Results...。您是否检查过您的 ImageJ 版本是否是最新的?我的 ImageJ 不知道“导入结果”命令,而只知道“结果...”,您确定您使用的是正确的命令吗?
  • Import results 在这种情况下不是内置命令,而是我正在开发的插件。我很快就会在问题中添加一个 SSCCE。

标签: java api imagej


【解决方案1】:

此错误已在最新版本的 ImageJ (1.47t) 中得到解决。在此版本中,如果您从包含 Windows 路径的 GenericDialog 在 StringField 中录制宏,则录制的值将正确转义。

【讨论】:

    猜你喜欢
    • 2021-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-26
    • 1970-01-01
    相关资源
    最近更新 更多