纯go语言ui框架之高级组件:第86个组件容器布局

📅 2026/7/1 16:00:48
纯go语言ui框架之高级组件:第86个组件容器布局
纯go语言实现flutter风格桌面GUI框架ui1、支持windows 、linux、unix、masOS、ios、android等操作系统2、代码风格和flutter基本差不多如果会flutter和go语言无缝切换上手如果熟悉go语言很快上手。3、框架有上100个组件足以支持绝大部复杂应用4、支持1手动刷新ui2定时更新ui3指定时间范围实时刷新ui4手动开启实时刷新ui和手动关闭实时刷新ui5全局实时刷新————————————————1、纯go语言ui框架第86个组件容器布局边框设置拖拽范围完整代码// Container 布局容器示例演示 Header/Aside/Main/Footer 四部分布局// 各部分之间分隔条可拖拽调整尺寸也可设置为固定不可拖拽// 某部分为 nil 时自动移除其它部分填充到该区域packagemainimport(uiui/font)var(elBlueui.Color{R:0x40,G:0x9E,B:0xFF,A:0xFF}elGreenui.Color{R:0x67,G:0xC2,B:0x23,A:0xFF}elOrangeui.Color{R:0xE6,G:0xA2,B:0x3C,A:0xFF}elRedui.Color{R:0xF5,G:0x6C,B:0x6C,A:0xFF}whiteui.Color{R:0xFF,G:0xFF,B:0xFF,A:0xFF}pageBgui.Color{R:0xF0,G:0xF2,B:0xF5,A:0xFF}splitClrui.Color{R:0xC0,G:0xC6,B:0xD4,A:0xFF})funcmain(){app:ui.NewApp(Container 布局容器 - 可拖拽分隔,1000,700)app.SetBgColor(pageBg)tab:ui.NewTab(ui.TabItem{Label:完整布局,Content:fullLayout()},ui.TabItem{Label:无 Header/Footer,Content:asideMainLayout()},ui.TabItem{Label:无 Aside,Content:headerFooterLayout()},ui.TabItem{Label:Header 固定,Content:fixedHeaderLayout()},)tab.SetID(containerLayoutTab)app.SetRoot(tab)app.Run()}// region 返回一个带背景色与文字的区域用于可视化四部分funcregion(c ui.Color,textstring)ui.Widget{returnui.NewContainer().SetBackground(c).SetChild(ui.NewLabel(text).SetTextColor(white).SetFontSize(15).SetFontWeight(font.Bold))}// fullLayout 完整四部分布局全部分隔条可拖拽funcfullLayout()ui.Widget{returnui.NewContainerLayout().SetHeader(region(elBlue,Header可上下拖拽)).SetAside(region(elGreen,Aside\n可左右拖拽)).SetMain(region(elOrange,Main自动填充剩余空间)).SetFooter(region(elRed,Footer可上下拖拽)).SetHeaderHeight(80).SetAsideWidth(180).SetFooterHeight(100).SetHeaderRange(40,200).// Header 高度限制 40~200SetAsideRange(120,1000).// Aside 宽度限制 120~400SetFooterRange(30,150).// Footer 高度限制 30~150SetSplitterSize(6).SetSplitterColor(splitClr).SetBackground(pageBg)}// asideMainLayout 只有 Aside MainHeader/Footer 为 nilMain 自动填充上下funcasideMainLayout()ui.Widget{returnui.NewContainerLayout().SetAside(region(elGreen,Aside\n可左右拖拽)).SetMain(region(elOrange,Main\nHeader/Footer 为 nil自动填充到顶部和底部)).SetAsideWidth(200).SetAsideRange(100,400).SetSplitterSize(6).SetSplitterColor(splitClr).SetBackground(pageBg)}// headerFooterLayout 只有 Header Main FooterAside 为 nilMain 自动填满宽度funcheaderFooterLayout()ui.Widget{returnui.NewContainerLayout().SetHeader(region(elBlue,Header)).SetMain(region(elOrange,Main\nAside 为 nil自动填满宽度)).SetFooter(region(elRed,Footer)).SetHeaderHeight(80).SetFooterHeight(100).SetHeaderRange(40,200).SetFooterRange(30,150).SetSplitterSize(6).SetSplitterColor(splitClr).SetBackground(pageBg)}// fixedHeaderLayout Header 固定不可拖拽Aside 与 Footer 可拖拽funcfixedHeaderLayout()ui.Widget{returnui.NewContainerLayout().SetHeader(region(elBlue,Header固定不可拖拽)).SetAside(region(elGreen,Aside\n可左右拖拽)).SetMain(region(elOrange,Main)).SetFooter(region(elRed,Footer可上下拖拽)).SetHeaderHeight(70).SetAsideWidth(180).SetFooterHeight(100).SetHeaderResizable(false).// Header 分隔条固定SetAsideRange(120,400).SetFooterRange(30,150).SetSplitterSize(6).SetSplitterColor(splitClr).SetBackground(pageBg)}效果