标签归档:JUCE控件

FileChooserDialogBox详解

FileChooserDialogBox

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

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

继续阅读FileChooserDialogBox详解

JUCE类库PropertyPanel详解

PropertyPanel

图 PropertyPanel属性面板与PropertyComponent属性组件

PropertyPanel属性面板和PreferencesPanel系统设置面板不是一回事。PropertyPanel属性面板容纳并显示一批PropertyComponent属性组件,专用于设置程序中所需的各类数值,包括布尔值,数值,字符串值等等。而PreferencesPanel系统设置面板则是顶部有一排按钮的组件,这些按钮用来切换不同的Component子组件(页面)。系统设置面板可将属性面板设置为子组件(页面),也可将任意Component组件设置为自己的子组件,但属性面板不能将系统设置面板设置为自己的子组件,也不能将PropertyComponent属性组件之外的其他任何组件设置为自己的子组件。

继续阅读JUCE类库PropertyPanel详解

JUCE复合控件之DragAndDropContainer

ComponentDragger可实现以鼠标拖拽的方式改变某个组件或其子组件的定位(手工移动)。该类比较简单,如要实现更复杂的拖放操作,比如:程序内部的自定义组件的拖放、操作系统的文件拖放到本程序,外部程序中的文本拖放到本程序等等,这些情况下,需用到:DragAndDropContainer拖放容器、DragAndDropTarget拖放目标、FileDragAndDropTarget文件拖放目标和TextDragAndDropTarget文本拖放目标这几个类。

实现上述拖放操作的关键有四点

继续阅读JUCE复合控件之DragAndDropContainer

JUCE复合控件之LassoComponent

实现套索功能,需3个类模板和1个抽象类:

  • LassoComponent 套索组件,继承自Component。通常声明为内容组件的栈对象。
  • LassoSource 独立的抽象基类。拖拽套索时选择的项目由该类获取并转存。内容组件需继承该类。
  • SelectedItemSet 项目容器,继承自ChangeBroadcaster。声明为内容组件的栈对象。
  • ChangeListener 可变捕获器,抽象基类,用于捕获项目容器所产生的消息。内容组件需继承该类。

继续阅读JUCE复合控件之LassoComponent

JUCE复合控件之StretchableLayoutManager

StretchableLayoutManager的功能:鼠标拖拉组件与组件之间的边框(调整栏),可实时改变一个或多个组件(操作区)的大小。要实现此功能,需用到两个类:StretchableLayoutManager和StretchableLayoutResizerBar。简而言之,要实现布局分栏与拖拽调整,需:布局器与调整栏。

实现流程
继续阅读JUCE复合控件之StretchableLayoutManager

JUCE复合控件之ThreadWithProgressWindow

ThreadWithProgressWindow为使用后台线程并模态显示的进度条窗口(带有进度条的消息窗),可带有【取消】按钮。该类是一个抽象基类,并没有继承自Component类,而是继承自Thread和Timer这两个类,虽实现了Timer类的纯虚函数timeCallback(),但没有实现Thread类的纯虚函数run()。因此,使用本类完成进度条窗口功能时,必须派生子类。

ThreadWithProgressWindow类的构造函数(后3个参数有默认值):

继续阅读JUCE复合控件之ThreadWithProgressWindow

JUCE复合控件之Toolbar

Toolbar工具栏不仅可以放置并显示常规的工具栏按钮(带图标和文字说明),还可以放置任意类型的控件,比如:组合框、列表框、文本标签、推子、弹出式菜单等等,甚至可以放置各类自定义的组件。也就是说:工具栏可为一个定制的组件,包含可绘制按钮或图像按钮,以及其他控件。

带图像按钮的常规工具栏所需的类有4个:

继续阅读JUCE复合控件之Toolbar

JUCE复合控件之MenubarModel

实现主菜单功能离不开MenubarModel菜单栏模型抽象基类,同时需要两个辅助类:

  • PopupMenu弹出式菜单对象,代表菜单栏中的顶级菜单,用户点击了哪个顶级菜单的名称,该对象就添加哪个顶级菜单所需的菜单项,并自动模态显示在该顶级菜单名称的下面。该对象需由MenuBarModel的派生类在getMenuForIndex()中创建、添加菜单项或命令项,而后返回之。
  • ApplicationCommandManager程序命令管理器对象。PopupMenu添加菜单项时,可以直接添加该菜单项的文本和ID,也可添加程序命令,将程序命令作为菜单项。每个程序命令均有简略描述(作为菜单项或按钮所显示的文本),同时均有一个唯一性的ID,ApplicationCommandTarget将根据此ID在其perform()函数中执行对应的代码。

继续阅读JUCE复合控件之MenubarModel