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可以提高设计的效率。

  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
做方便实用的SWING控件! 欢迎大家测试并提交BUG报告. 由于个人能力和时间上的局限,希望有兴趣一起开发SWING控件的朋友,请与我联系.让我们一起努力! 为了方便查看,需要讨论的朋友请到另外一个置顶贴子. [讨论]关于"开源SWING控件" -------------------------------------------------------------------- 2004/03/25 首次发布 2004/04/08 把以前的组件和新做的组件合并到一个OpenSwing.jar文件, 并初步将该组件库命名为”OpenSwing” 2004/06/17 加入了一个打印模板和一些新做的组件。 2004/07/25 加入了一个类似QQ界面的JGroupPane,修正了一些以前的组件的BUG. 对几乎所有的组件全部加入了JavaBeans处理, 使OpenSwing支持可视开发. 2005/04/17 将JNumberField最大长度,小数位长度修正成符合数据库定义的规范,如:NUMBER(10,2) 2005/04/21 修改了JNumberField的参数方式及不能输入负数的BUG,及数字验证方法 JDatePicker弹出时不能显示当前输入日期的BUG 加入了好多人在CJW论坛上贴子想要的带关闭按钮的JCloseableTabbedPane可关闭的JTabbedPane的组件 2005/06/21 对JDatePicker加入了时分秒的输入 2006/01/20 修正了JPopupButton在XP风格下呈两个按钮样子的BUG 对JFontDialog进行了部分修改 2006/03/08 从JDatePicker提出来一个组件JCalendarPanel日期选择面板 并修改了JDatePicker的设计方式 2006/03/23 加入了韩文支持, 感谢在韩国工作的网友Sang Jian,韩文支持 OpenSwing_ko_KR.properties文件由他提供 2006/04/04 对JFileTree加入了文件过滤器建构式.并对显示进行了排序 -------------------------------------------------------------------- ■以下组件,均在j2sdk1.4.2_01+win2k环境下测试通过,继续欢迎大家测试并提交BUG报告. JCalendarPanel 日期选择面板, 从JDatePicker提出来的控件, 可以单独使用。 JCloseableTabbedPane 带关闭按钮/可设置菜单的JTabbedPane JDateField 日期输入框,输入正确格式的日期 JDatePicker 继承自JComboBox的日期选择框,保证输入正确格式的日期(yyyy-MM-dd) 履历: 2004/03/26 根据网友caiyj的建议引入了recoon写的关于JDateDocument的校验方法 2004/04/02 根据网友caiyj提交的BUG,修正了做为TableCellEditor时日期选择面板弹不出问题 JDirChooser 文件目录选择对话框 JFileTree 文件目录树 JFontDialog 字体对话框 JGroupPane 类似QQ界面的组群管理面板 JIpAddressField IP地址输入框,只能输入0~255数字的IP地址 JListChooser 列表选择对话框 JNumberField 数字输入框,可限制小数位数,数字最大长度,最大最小能输入的数字 JPopupButton 带下拉菜单的工具栏按钮 JStatusBar 模拟Windows的状态栏. JStringField 字符输入框,限制可输入的最大长度 JTreeComboBox 带有树形结构的下拉列表 com.sunking.swing.print.* 一个打印模板 -------------------------------------------------------------------- ■ OpenSwing的测试方法: 解压后是一个JBUILDER项目的目录结构,里面有一个test.bat文件和OpenSwing.jar(主库文件)/OpenSwingBeanInfo.jar(可视开发支持文件),直接执行test.bat进行测试。 ■ OpenSwing的发布: 只需要将OpenSwing.jar(主库文件)包含在CLASSPATH即可。 OpenSwingBeanInfo.jar(可视开发支持文件)不需要发布, 仅提供可视化开发的支持 ■JBuilder上配置OpenSwing可视化开发组件 1.将OpenSwing.jar/ OpenSwingBeanInfo.jar文件复制到 %JBuilderX_HOME%\lib\ 目录下 2.打开JBuilderX 3.菜单Tools --> Configure Libraries…-->弹出Configure Libraries…对话框 ①New… --> Name输入OpenSwing, Location输入User Home -->OK ②选取对话框左边User Home下面出现的OpenSwing ③对话框右边Class和 Source页分别做如下动作: Add…-->选择%JBuilder_HOME%\lib\OpenSwing.jar和OpenSwingBeanInfo.jar --> OK ④按OK关闭 Configure Libraries…对话框 4.菜单Tools--> Configure Palette… 弹出Palette Properties…对话框 ①Pages 页按 Add… --> PageName输入OpenSwing --> OK ②Add components页 -->Select library…--> 选取User Home 下的OpenSwing类库-->OK ③Add components页 -->在Component filtering块选择 No filtering-->展开com.sunking.swing类包-->选择如下类: JGroupPanel,JStatusBar,JPopupButton,JDatePicker,JStringField,JNumberField,JFontDialog,JIpAddressField,JDateField (可按住Ctrl键复选)-->OK ④按OK关闭Palette Properties…对话框 5.配置成功标志: 随便打开一个JAVA文件,点下面的Design页,然后上面会出来一个设计工具条,诸如:Swing,Swing Containers…等,工具条的右上角有用来滚动工具栏的按钮,我们可以将其滚动到最末尾.如果看到有一个OpenSwing的页,并在它上面有几个可视组件的话,说明你已经配置成功了,开始你的OpenSwing可视开发之旅吧.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值