870920 Menu

FileChooserDialogBox详解

FileChooserDialogBox

图 FileChooserDialogBox(JUCE默认的文件浏览器)的运行界面

JUCE类库有两种文件浏览器对话框,用于打开文件、另存文件、选择目录等操作,一是FileChooser,另一个是FileChooserDialogBox。FileChooser既可以使用操作系统默认的文件选择对话框,也可内部调用JUCE自带的FileChooserDialogBox。先了解一下FileChooser。

通常临时使用FileChooser的栈对象。流程有3

  1. 声明FileChooser 栈对象,初始化之;
  2. 该对象调用browseFor…() 方法(选择一个或多个文件,打开或另存等等);
  3. 如果返回true,则代表用户选择了文件,可使用getResult()方法获取所选的文件。

示例与详解:

1、“打开多个文件”对话框:

2、带图像预览的文件选择对话框。与上面的代码基本一致,所不同的,需先定义一个图像预览对象,设置其大小,而后将此对象作为参数传给browseFor…()函数。示例(略):

3、保存文件对话框。通常用于第一次保存文档,或者文档另存为。思路与做法基本同前,所不同的:

  • browseForFileToSave()方法最好喂一个实参true,用于提示用户,是否确认覆盖保存。
  • 为方便编码,if判断体内最好定义一个文件类对象,初始化为文件选择对象的返回值。

示例略。

4、选择目录或新建目录对话框。思路与编码基本同上。if判断中换成对应的方法即可。示例略。

需注意,以上文件选择类对话框,都是模态窗口,为确保代码跨平台后不出现问题(主要是Android平台),要使用模态条件宏进行包裹。其他模态组件同理。

FileChooser类的成员函数一览:(略)

注意两点

  1. FileChooser类没有继承任何基类,是一个独立的类
  2. 如需使用JUCE默认的文件浏览器(打开或保存对话框),则使用FileChooserDialogBox。

FileChooserDialogBox的继承层次为(子类->父类):

FileChooserDialogBox —> ResizableWindow —> ToplevelWindow —> Component

ResizableWindow有两个派生类,一个是DocumentWindow,另一个是FileChooserDialogBox。

FileChooserDialogBox的使用流程有二

  1. 内容组件类的功能性函数中,临时创建该类的栈对象
  2. 创建后,调用show()。该函数返回bool值,基于返回值获取所选的文件或进行其他处理

示例代码