java swing 程序中 GroupLayout的使用

遇到的问题

最近在做java swing的桌面程序,要把一些按钮标签等控件放到frame中。
最开始使用的是setbounds()这个方法,虽然能够构造出了精美的界面,但是如果改变屏幕分辨率,界面立马就变得非常怪异了。
另外,每添加一个控件都需要重新计算起始点、宽度、高度等等,很麻烦。

整体架构流程

使用GroupLayout可以完美的解决上述的问题。
简单来说,GroupLayout就是各个元素(或者组)相对于水平轴(Horizontal)和垂直轴(Vertical)的排列方式来管理元素。

每一种Container(容器 比如JFrame或JPanel)都可以使用下列方法设置GroupLayout

GroupLayout gl = new GroupLayout(container);
container.setLayout(gl);

当有了布局对象,接下来要做的就是实现这两个方法:

gl.setHorizontalGroup(Group group);//设置水平布局
gl.setVerticalGroup(Group group);//设置垂直布局

其中group是组对象,有两种排列方式的组对象如下所示:

在这里插入图片描述
其中串行和并行就是高中物理电路中的意思。

通过以下语句分别可以建立串行组和并行组

gl.createParallelGroup();
gl.createSequentialGroup();

有了组对象Group,再把元素(或者更下一级的组)添加上,就实现了布局了。

group.addComponent(component);
group.addGroup(group1);

方向与串/并行

之前说到groupLayout对象需要实现水平和垂直两个方法,但是水平和垂直对于元素的排列方式是不一样的,比如下列三个元素,从垂直的角度看是串行(SequentialGroup),但是从水平的角度他是并行的(ParallelGroup)。
在这里插入图片描述
因此如果需要布局上图,水平和垂直的代码如下所示

//水平角度并行
gl.setHorizontalGroup(
	gl.createParallelGroup()
		.addComponent(c1)
		.addComponent(c2)
		.addGroup(g1))


//垂直角度串行
gl.setsetVerticalGroup(
	gl.createSequentialGroup()
		.addComponent(c1)
		.addComponent(c2)
		.addGroup(g1))

以下三个元素正好相反,从垂直的角度看是并行的(ParallelGroup),但是从水平的角度他是串行(SequentialGroup)。
在这里插入图片描述

小结

使用GroupLayout可以提高设计的效率。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值