进行对话框,用户可以选择文件或文件夹

时间:2018-07-20 10:54:47

标签: matlab user-interface user-experience filechooser matlab-gui

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

我想为用户提供使用单个窗口选择 文件文件夹的功能,因为这对于我所使用的UX很重要试图创造。

到目前为止,我发现的唯一使用上述功能的解决方案 1 需要一个额外的步骤,即事先询问用户他们想要选择哪种类型的实体,以及相应地调用适当的函数-我觉得很不方便。

那我怎么能有一个对话框让我选择其中一个呢?

1 个答案:

答案 0 :(得分:6)

为此,我们可以使用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

JFileChooser具有各种有趣的设置,例如multi-selectionshowing hidden files/folders,以及标准设置,例如changing the dialog title,按钮texts和{{3 }}等。tooltips也可以将其用作“打开”对话框或“保存”对话框。

在R2018a上使用Java 1.8.0_144(java.lang.System.getProperty("java.version")的输出)进行了测试。