Skip to content
On this page

Table 组件

Table小部件类似于List小部件(该工具包的另一个集合小部件),具有二维索引。与List类似,它的设计目的是在呈现大量数据时帮助构建真正高效的界面。因此,创建小部件时不会嵌入所有数据,而是在需要时调用数据源。

表使用回调函数在需要时请求数据。有3个主要回调,Length、CreateCell和UpdateCell。Length回调(首先传递)是最简单的,它返回要显示的数据中有多少项,它返回的两个int表示行和列计数。另外两个与内容模板相关。

CreateCell回调返回一个新的模板对象,就像列表一样。不同的是,MinSize将定义每个单元格的标准大小,以及表的最小大小(至少显示一个单元格)。如前所述,调用UpdateCell将数据应用于单元格模板。传入的索引是相同的(行,列)int对。

go
package main

import (
	"fyne.io/fyne/v2"
	"fyne.io/fyne/v2/app"
	"fyne.io/fyne/v2/widget"
)

var data = [][]string{[]string{"top left", "top right"},
	[]string{"bottom left", "bottom right"}}

func main() {
	myApp := app.New()
	myWindow := myApp.NewWindow("Table Widget")

	list := widget.NewTable(
		func() (int, int) {
			return len(data), len(data[0])
		},
		func() fyne.CanvasObject {
			return widget.NewLabel("wide content")
		},
		func(i widget.TableCellID, o fyne.CanvasObject) {
			o.(*widget.Label).SetText(data[i.Row][i.Col])
		})

	myWindow.SetContent(list)
	myWindow.ShowAndRun()
}