代码之家  ›  专栏  ›  技术社区  ›  Dev-iL

创建一个对话框,用户可以在其中选择文件或文件夹

  •  7
  • Dev-iL  · 技术社区  · 8 年前

    在matlab中,有一个函数提示用户选择一个或多个文件- uigetfile 还有另一个功能,允许用户选择文件夹- uigetdir .

    我想为用户提供选择 任何一个 文件 一个文件夹,使用一个窗口,因为这对于我要创建的UX很重要。

    到目前为止,我发现的唯一一个使用上述函数的解决方案 1 需要一个额外的步骤,事先询问用户希望选择哪种类型的实体,并相应地调用相应的函数——我觉得这不方便。

    那么,我怎样才能有一个对话框,允许我选择其中一个呢?

    1 回复  |  直到 8 年前
        1
  •  6
  •   Dev-iL    8 年前
    我们可以使用一个Java组件,特别是一个HRFF =“HTTPS:/Octh.Oracle .COM/JavaS/7/DOCS/API/JavaX/SWIG/JFILSECELTER .HTML”Re=“NoeFrError”>代码> JFileChooser < /代码> ,并确保我们提供了<代码>文件和目录> <代码>选择标志> < /P> 选择实体: jfc=javax.swing.jFileChooser(pwd); jfc.setfileselection模式(jfc.files_和_目录); 返回值=jfc.showOpenDialog([]); 开关返回值 案例jfc.批准选项 fname=字符串(jfc.getSelectedFile()); case jfc.cancel_选项 %用“取消”做点什么 case jfc.error_选项 %做一些有错误的事情 否则 throw(mexception(“filefolderchooser:unsupportedResult”,…… “从jFileChooser返回的结果不受支持:”+ReturnVal+… “。请查阅当前Java版本的文档(“+”… String(Java.Lang.Stase.GETFACTS(“java.版本”))+“.]) 结束 程序选择: 切换为true%<这只是一些避免if/elseif的技巧 案例ISfolder(fname) %处理文件夹 案例ISfile(fname) %用文件做点什么 否则 throw(meexception('filefolderChooser:invalidSelection',…… '选择无效,无法继续')); 结束

    这将生成一个熟悉的对话框,如下所示,其工作方式与预期完全相同:

    jfilechooser有各种有趣的设置,如multi selectionand,以及标准设置,如:http://ords.Oracle .com /javase/java/javax /Swing /jFielS选择器.html HTML StdidiActudioJava.Lang.Studio”Re= =“NoeFror”>更改对话框标题< /A>,按钮“http://DOCS.Oracle .COM/JavaSe/ 8 /DOCS/API/JavaX/Swing /JFielS选择器。E.字符串-“Re= = /Aj>”和“http://DOCS.Oracle .Oracle .com /JavaSe/ 8 /DOCS/API/JavaX/Swing /jFielS选择器.html Suff.ButoTooTypTeX.java. Lang.Studio”Re= =“NoeFror”>工具提示等,它也可以简单地用“HRFF=”http://DOCS.Oracle .COM/JavaSe/8/DOCS/API/Java作为“打开”对话框或“保存”对话框来使用。ExtJava.Lang.x/swing/jfilechooser.html setdialogtype int-“rel=”noreferrer“>设置值。

    对R2018A进行测试,使用Java1.80Y144(输出代码< java. Lang.Stask.GETFACTS(“java.版本”)< />代码>

    JFileChooser并确保我们向其提供FILES_AND_DIRECTORIES选择标志。

    %% Select entity:
    jFC = javax.swing.JFileChooser(pwd);
    jFC.setFileSelectionMode(jFC.FILES_AND_DIRECTORIES);
    returnVal = jFC.showOpenDialog([]);
    switch returnVal
      case jFC.APPROVE_OPTION
        fName = string(jFC.getSelectedFile());
      case jFC.CANCEL_OPTION
        % do something with cancel
      case jFC.ERROR_OPTION
        % do something with error
      otherwise
        throw(MException("fileFolderChooser:unsupportedResult", ...
                         "Unsupported result returned from JFileChooser: " + returnVal + ...
                         ". Please consult the documentation of the current Java version (" + ...
                         string(java.lang.System.getProperty("java.version")) + ")."));
    end
    
    %% Process selection:
    switch true % < this is just some trick to avoid if/elseif
      case isfolder(fName)
        % Do something with folder
      case isfile(fName)
        % Do something with file
      otherwise
        throw(MException('fileFolderChooser:invalidSelection',...
                         'Invalid selection, cannot proceed!'));
    end
    

    这将生成一个熟悉的对话框,如下所示,其工作方式与预期完全相同:

    Selection dialog

    文件选择器有各种有趣的设置,比如multi-selectionshowing hidden files/folders以及标准设置,如changing the dialog title,按钮textstooltips等等。它也可以简单地用作“打开”对话框或“保存”对话框。setting a value.

    在R2018A上用Java1.80Y144进行测试(输出java.lang.System.getProperty("java.version"))