07-border布局的另一个用处

07-border布局的另一个用处

实现如下的布局:

在这里插入图片描述

分析:

1.USERNAME和PASSWORD使用form

2.PASSWORD的文本框使用NewMultiLineEntry

布局1

USERNAME和PASSWORD作为一个form整体,使用border布局,form设置为top,文本框设置为center参数。

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("VPN")
	userEntry := widget.NewEntry()
	userL := widget.NewFormItem("USERNAME", userEntry)
	passEntry := widget.NewPasswordEntry()
	passL := widget.NewFormItem("PASSWORD", passEntry)
	form := widget.NewForm(userL, passL)
	txtArea := widget.NewMultiLineEntry()
	c := container.NewBorder(form, nil, nil, nil, txtArea)
	myWindow.SetContent(c)
	myWindow.Resize(fyne.NewSize(300, 300))
	myWindow.Show()
	myApp.Run()
}

布局2

使用vbox布局的效果:

在这里插入图片描述

代码如下:

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("VPN")
	userEntry := widget.NewEntry()
	userL := widget.NewFormItem("USERNAME", userEntry)
	passEntry := widget.NewPasswordEntry()
	passL := widget.NewFormItem("PASSWORD", passEntry)
	form := widget.NewForm(userL, passL)
	txtArea := widget.NewMultiLineEntry()
	//设置大小无效
	txtArea.Resize(fyne.NewSize(100, 100))
	c := container.NewVBox(form, txtArea)
	myWindow.SetContent(c)
	myWindow.Resize(fyne.NewSize(300, 300))
	myWindow.Show()
	myApp.Run()
}

当把txtArea放到容器里面,设置大小是不生效的。要想设置的大小生效,可以设置无布局。

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("VPN")
	userEntry := widget.NewEntry()
	userL := widget.NewFormItem("USERNAME", userEntry)
	passEntry := widget.NewPasswordEntry()
	passL := widget.NewFormItem("PASSWORD", passEntry)
	form := widget.NewForm(userL, passL)
	txtArea := widget.NewMultiLineEntry()
	txtArea.Resize(fyne.NewSize(290, 200))
	c1 := container.NewWithoutLayout(txtArea)
	c := container.NewVBox(form, c1)
	myWindow.SetContent(c)
	myWindow.Resize(fyne.NewSize(300, 300))
	myWindow.Show()
	myApp.Run()
}

效果如下:

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

shulu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值