BubbleMessageComponent详解

BubbleMessageComponent继承自Component的派生类BubbleComponent,可显示一条具有属性化性质的字符串信息。见下图所示:

BubbleMessageComponent

图 BubbleMessageComponent(语泡消息组件)

使用BubbleMessageComponent的流程

  1. 创建并设置语泡所显示的AttributedString
  2. 创建语泡对象,始终置顶并置于桌面,显示语泡

示例代码(位于某个内容组件的mouseUp()函数中):

// 定义属性化字符串,即所要显示的文字
AttributedString s;
    
// 追加文本,一并设置文本的颜色。
// append()有多个重载版本,还可设置字体及大小、样式等
s.append (L"语泡可显示消息,对进度条进行说明。\n\n", Colours::red);
s.append (L"进度条可显示进度,常用于较长时间的等待,", Colours::black);
s.append (...);
    
// 对s中已有的字符串设置字体,大小和样式
s.setFont (Font (L"微软雅黑", 16.0f, Font::plain));

// 设置文本在语泡内的对齐方式
s.setJustification (Justification::centredLeft);

// 创建一个指针型的语泡对象
BubbleMessageComponent* bmc = new BubbleMessageComponent();      

// 如果操作系统支持桌面窗口半透明显示,则设置始终置顶并置于桌面
if (Desktop::canUseSemiTransparentWindows()) 
{
    bmc->setAlwaysOnTop (true);
    bmc->addToDesktop (0);
} 

else 
{
    // 如果操作系统不支持桌面窗口半透明,则添加到内容组件类中
    addChildComponent (bmc);
}

/* 显示语泡。指向1参,显示2参属性化字符串,3参显示多长时间。4参如果为true, 则鼠标点击之后立即消失。(鼠标可在屏幕任何位置点击)。5参如果为true, 则不可见之后自动销毁自身  */
bmc->showAt (slider, s, 20000, true, true);

提示

  • 语泡内文字自动换行。文本的最佳行数:8行之内。每行的行首建议留4个空格的缩进。
  • showAt()有另一个重载版本,1参和2参为指定语泡出现的位置(x,y坐标),其余参数同上。

另一例

AttributedString s;
s.append (ColourComponent::getStringOfColour (colour), colour);
s.append (L"\n已收藏到" + String (index + 1) + L"号位置。");

s.setFont (Font (L"微软雅黑", 18.0f, Font::plain));

BubbleMessageComponent* bmc = new BubbleMessageComponent();        
bmc->setAlwaysOnTop (true);
bmc->addToDesktop (0);
bmc->showAt (colours[index], s, 6000, true, true);

// 弹出语泡的同时播放操作系统的提示音。playAlertSound()为LookAndFeel类的函数
LookAndFeel::getDefaultLookAndFeel().playAlertSound();

小技巧

本类继承自BubbleComponent语泡组件类,仅能显示文本信息。如需显示图像和其他交互内容,可参照消息语泡类,自定义BubbleComponent类的派生类。