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()
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29