试了很多方法,无法将header 表头按照容器居中,总是相对窗口居中的,如何解决?
package main
import (
"fyne.io/fyne/v2"
"fyne.io/fyne/v2/app"
"fyne.io/fyne/v2/container"
"fyne.io/fyne/v2/widget"
)
func main() {
// 创建一个新的应用
myApp := app.New()
myWindow := myApp.NewWindow("Table Example")
// 定义表格数据
data := [][]string{
{"Header 1", "Header 2", "Header 3"},
{"Row 1, Col 1", "Row 1, Col 2", "Row 1, Col 3"},
{"Row 2, Col 1", "Row 2, Col 2", "Row 2, Col 3"},
{"Row 3, Col 1", "Row 3, Col 2", "Row 3, Col 3"},
{"Row 4, Col 1", "Row 4, Col 2", "Row 4, Col 3"},
{"Row 5, Col 1", "Row 5, Col 2", "Row 5, Col 3"},
{"Row 6, Col 1", "Row 6, Col 2", "Row 6, Col 3"},
}
// 创建表格
table := widget.NewTable(
func() (int, int) {
return len(data), len(data[0]) // 返回行数和列数
},
func() fyne.CanvasObject { // 创建单元格
return widget.NewLabel("") // 初始化空标签
},
func(cellID widget.TableCellID, cell fyne.CanvasObject) { // 更新单元格内容
i, j := cellID.Row, cellID.Col
cell.(*widget.Label).SetText(data[i][j]) // 设置单元格文本
})
// 调整表格列宽,使内容自适应
for i := 0; i < len(data[0]); i++ {
table.SetColumnWidth(i, 120) // 设置列宽为120
}
// 设置每一行的高度
for i := 0; i < len(data); i++ {
table.SetRowHeight(i, 40) // 设置每一行的高度为40
}
// 将表格放入滚动容器中
scrollContainer := container.NewScroll(table)
// 设置滚动容器的大小,增加可视区域
scrollContainer.SetMinSize(fyne.NewSize(300, 200))
// 添加表头
header := widget.NewLabel("Table Header")
header.Alignment = fyne.TextAlignCenter // 设置文本居中显示
cH := container.NewCenter(header)
// 将滚动容器放入水平布局容器
hCont := container.NewHBox(scrollContainer)
// 将水平布局容器放入垂直布局容器
vCont := container.NewVBox(cH, hCont)
vCont.Resize(fyne.NewSize(300, 200))
// 设置窗口的内容
myWindow.SetContent(vCont)
// 设置窗口的初始大小
myWindow.Resize(fyne.NewSize(600, 400))
// 显示并运行窗口
myWindow.ShowAndRun()
}
