标签归档:GUI

JUCE类库Desktop详解

Desktop类继承自DeletedAtShutdown, Timer和AsyncUpdater等基类,它本身并不是组件。该类代表当前操作系统的桌面(支持多显示器模式),用来容纳并管理桌面型组件、输入源(鼠标和触摸均为输入源)、一到多个显示器等等。一个或多个Component组件可成为桌面型组件(桌面窗口)。也就是说,Desktop类没有继承自Component,而是聚合了Component组件、Displays显示器、MouseInputSource输入源、ComponentAnimator组件动画器、Point点、Rectangle矩形、Timer计时器、LookAndFeel界面外观等类的对象。

继续阅读JUCE类库Desktop详解

JUCE类库SplashScreen详解

SplashScreen即通常所说的应用程序启动画面,或者闪屏。该功能的实现非常简单:JUCEApplication程序主体类的initialise()初始化函数中,首先创建SplashScreen对象,显示之。而后再实例化窗口框架类:

// 先创建闪屏所显示的图像
Image img (ImageCache::getFromMemory (BinaryData::sp_jpg,
                                      BinaryData::sp_jpgSize));

// 创建闪屏对象,堆对象。无需显式销毁之,系统自动托管
SplashScreen* splash = new SplashScreen();

// 显示。参数:本组件的名称,所显示的图像,最少显示多久,
// 是否带阴影,鼠标在任意位置点击是否消失
splash->show ("splash", img, 5000, true, true);

继续阅读JUCE类库SplashScreen详解

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