870920 Menu

JUCE复合控件之ListBox详解

复合控件:前台UI界面需抽象数据模型或其它辅助类才可以正常工作的复杂控件。绝大多数复合控件,均为“模型-视图”模式。即:视图类负责前台显示数据或提供人机交互的操作界面,抽象的模型类负责数据来源与数据的业务处理。实际编程时,在内容组件类中声明、管理和使用视图类的对象,同时,内容组件类继承自抽象的模型类,实现其纯虚函数,用自身(this)将二者关联到一起(视图设置模型),共同实现所需的功能。

ListBox是Component的直接派生类。要使用ListBox列表框,内容组件需继承ListBoxModel(列表框模型)类,实现该基类的2个纯虚函数,重写该基类的1个核心函数。ListBox对象的构造参数需要一个ListBoxModel类的指针。某个内容组件类使用列表框的常规步骤有5:

1、继承基类:

2、声明对象(此处声明为private作用域指针):

3、创建、添显、设置(本类无addListener()绑定捕获的功能)。类的构造函数中:

4、布局定位。类的resized()方法中setBounds()。可使用分栏技术,参见后文。

5、实现纯虚。继承而来的两个纯虚函数需实现,一个核心函数需重写:

如需实现列表项可拖放,则重写getDragSourceDescription(),返回所拖放的列表项的描述核心语句示例:返回列表框当前所选行的索引值:

由上可知,ListBoxModel和ListBox这两个类协同配合实现列表框功能。

ListBoxModel抽象类的重要成员函数(网站发布,略)。

ListBox类的重要成员函数(网站发布,略)。

ListBox有两个派生类
 TabbedListBox:表格,后文详述。
 FileListComponent:文件列表组件。该组件可在列表框中显示某个目录下的文件,是文件浏览组件FileBrowserComponent必不可少的组合类,而FileBrowserComponent的对象又是JUCE内置的文件浏览器FileChooserDialogBox所必不可少的构造参数。