870920 Menu

Viewing all items for tag JUCE

JUCE类库PreferencesPanel详解

PreferencesPanel

图  PreferencesPanel 图标式选项卡

PreferencesPanel图标式选项卡、TabbedComponent常规选项卡和ToolBar工具栏这三者有异曲同工之妙:

浏览全文

JUCE类库PropertyPanel详解

PropertyPanel

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

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

浏览全文

KeyMappingEditorComponent

本小节内容主要涉及KeyMappingEditorComponent和KeyPressMappingSet这两个类。

KeyMappingEdit

图 KeyMappingEditorComponent快捷键编辑对话框

浏览全文

ApplicationCommandManager 3-3

与ApplicationCommandManager命令管理器和ApplicationCommandTarget命令目标关系异常紧密且非常重要的是ApplicationCommandInfo命令信息结构体,其代表每一条命令的详细信息,命令目标类的getCommandInfo()函数的执行结果,即将有关数据保存到该结构体中。其枚举、成员函数和数据成员均为public类型的。

浏览全文

ApplicationCommandManager 3-2

由上例可知,如此一来,所有程序命令目标类的命令全部集中在顶级窗口中调度,即:ApplicationCommandManager程序命令管理器对象将所有的命令目标类与所有命令的快捷键、命令所执行的功能等等集中到了一起,不管当前哪个命令目标类拥有焦点,只要按下快捷键,就由顶级窗口统一调度和分配。

很大程度上讲,程序命令管理器就像一个桥梁和纽带,更像一个所有命令的容器,谁执行我不管,我只保管所有命令,接收到有关消息后(比如用户按下了快捷键),我就及时捕获该按键,并将其转发给已经注册给我的命令目标对象。这一点非常符合OOP的职责单一、低耦合、依赖倒转等设计原则,更大大简化了编程中对象之间的组合与聚合。理解并运用JUCE类库的这一机制,非常重要!

浏览全文

ApplicationCommandManager 3-1

本小节内容涉及以下类:

  • ApplicationCommandManager 命令管理器,数据容器,保存快捷键集合对象
  • KeyPressMappingSet 快捷键集合,保存所有命令及其详细信息
  • ApplicationCommandInfo 命令信息,代表一条具体的命令
  • ApplicationCommandManagerListener 捕获命令管理器所产生的消息(通常无需直接使用)
  • ApplicationCommandTarget 命令目标,定义所有命令,并执行具体的功能
  • InvocationInfo 命令目标所调用的命令信息

浏览全文

JUCE复合控件之DragAndDropContainer

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

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

浏览全文

JUCE复合控件之LassoComponent

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

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

浏览全文

JUCE复合控件之StretchableLayoutManager

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

实现流程
浏览全文

JUCE复合控件之ThreadWithProgressWindow

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

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

浏览全文