java设置背景图片不覆盖组件_TinyUI(嵌入式UI库)-TUIButton组件

博客介绍了TinyUI,这是一套适用于嵌入式的UI库,已移植到STM32F103上。它支持界面布局,UI组件使用简单,如TUIButton。还给出了使用示例,包括按钮点击事件接口定义,以及模拟器按钮测试界面窗口实现相关方法及显示效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

TinyUI是一套适用于嵌入式的UI库,目前已移植到STM32F103上。

TinyUI支持界面布局,因此,UI组件使用都非常简单,与TUITextView一样,TUIButton使用也非常简单,TUIButton提供了如下API:

/*********************************************************************************************************************    @Function: setText    @Description: 设置按钮文本    @Param:                text: 待显示的文本    @Return:                none    **********************************************************************************************************************    @History    ========================================================================***********************************************************************************************************************/void setText(const char* text);void setText(const string text);void setText(const wchar_t* text);/*********************************************************************************************************************    @Function: setFontSize    @Description: 设置按钮文本字体大小    @Param:                fontSize: 字号    @Return:                none    **********************************************************************************************************************    @History    ========================================================================***********************************************************************************************************************/void setFontSize(int32_t fontSize = 16);/*********************************************************************************************************************    @Function: setColor    @Description: 设置按钮文本及背景颜色,如果设置了图片,则背景色无效    @Param:                foreground: 字体颜色                background: 背景色    @Return:                none    **********************************************************************************************************************    @History    ========================================================================***********************************************************************************************************************/void setColor(color_t foreground = TUICOLORS::BLACK, color_t background = TUICOLORS::SILVER_GRAY);/*********************************************************************************************************************    @Function: setImagePath    @Description: 设置按钮背景图片,如果设置了图片,则背景色和边框色无效    @Param:                normal: 正常状态下的背景图片                pressed: 按下状态下的背景图片                focus: 按钮有焦点时的背景图片                hover: 鼠标悬停/移动时的背景图片    @Return:                none    **********************************************************************************************************************    @History    ========================================================================***********************************************************************************************************************/void setImagePath(string normal, string pressed, string focus = "", string hover = "");/*********************************************************************************************************************    @Function: registerListener    @Description: 设置按钮事件监听器    @Param:                listener: 实现了TUIButtonListener接口的实例    @Return:                none    **********************************************************************************************************************    @History    ========================================================================***********************************************************************************************************************/void registerListener(TUIButtonListener* listener);/*********************************************************************************************************************    @Function: setFocusAcceptKeyEvent    @Description: 设置只有当其有焦点时才接收按键事件,主要针对嵌入式    @Param:                enable:                                 true - 只有当其有焦点时才接收按键事件                                false - 任何时候都接收按键事件(前提是绑定了键值)    @Return:                none    **********************************************************************************************************************    @History    ========================================================================***********************************************************************************************************************/void setFocusAcceptKeyEvent(bool enable = false);/*********************************************************************************************************************    @Function: bindKeycode    @Description: 绑定物理按钮对应的虚拟按键值,可以为一个按钮绑定两个按键值                        注:嵌入式平台如果没有触摸,而是通过按键触发按钮点击事件时,必须绑定一个键值按钮才能响应。    @Param:                primaryCode: 由底层发出的键值(主键)                secondaryCode: 由底层发出的键值(次键),即可绑定两个快捷键    @Return:                none    **********************************************************************************************************************    @History    ========================================================================***********************************************************************************************************************/void bindKeycode(TUIVKCode primaryCode = TUIVKCode::TUIVK_ENTER, TUIVKCode secondaryCode = TUIVKCode::TUIVK_INVALID);

使用示例

TUIButton myButton;myButton.registerListener(this); // 注册按钮被点击监听器,一般按钮放在窗口中,则监听器为按钮所处的窗口,窗口需实现TUIButtonListener接口myButton.bindKeycode(TUIVKCode::TUIVK_F3); // 绑定快捷键(需要时),如某个物理按键可以发出F3键码myButton.setText(L"点我"); // 按钮显示的文本// 设置按钮的宽高,如果不设置宽高,则按钮的宽高由按钮所处的布局控件决定。myButton.setHeight(60);myButton.setWidth(120);//或//myButton.geometry.width = 120;//myButton.geometry.height = 60;

TUIButtonListener

按钮点击事件接口定义如下,

class TUIButtonListener{public:    virtual void onClick(TUIButton *view) = 0; // 按钮被点击, view代表哪一个按钮,通过view->getId()获取,按钮实例化之后UI库会自动为该按钮分配一个id。};

模拟器按钮测试界面窗口(ButtonTestWindow)实现TUIButtonListener的onClick()方法,并判断是否为myButton被按下

class ButtonTestWindow : public TUIWindow, public TUIButtonListener{public:    ButtonTestWindow(TUIWindow* parent = nullptr);    virtual ~ButtonTestWindow();    void onShow();    void onClose();    void onClick(TUIButton* view); // 实现按钮点击方法private:  TUIButton myButton;};// 其他方法略...void ButtonTestWindow::onClick(TUIButton* view){  if (nullptr == view)    {    return;    }          if (this->myButton.getId() == view->getId())    {        this->clickCount++;        string s = "myButton按钮被点击";    }}

模拟器显示效果:

fafd81e231715ff3bcac49fade0fb458.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值