GridBagLayout布局管理器应用详解

本文详细介绍了Java中的GridBagLayout布局管理器,它是最强大的布局管理器之一,允许灵活的界面布局。通过实例展示了如何创建一个类似Windows XP画图板的界面,解释了GridBagConstraints的重要属性,如gridx、gridy、gridwidth、gridheight、weightx、weighty等,并提供了一段关键代码实现界面布局。

很多情况下,我们已经不需要通过编写代码来实现一个应用程序的图形界面,而是通过强大的IDE工具通过拖拽辅以简单的事件处理代码即可很轻松的完成。但是我们不得不面对这样操作存在的一些问题

,有时候我们希望能够自由改变一个程序界面的大小,通过托拽生成的界面往往是不提供这个功能的,因为定制的界面一旦改变形状,组件间的布局会变得杂乱无章。
     Java中的布局管理器应用了策略者模式(Strategy),为不同类型的组件布局提供了很好的模型。而其中的网格组布局管理器(GridBagLayout)被认为是所有布局管理器中最强大的。下面笔者将通过一

个例子讲述它的使用方法。
 
1.笔者目标是实现一个WindowsXP下画图板的框架,下面是设计模型图

 
      我们可以将GridBagLayout看作没有任何约束或限制的网格布局(GridLayout),一个组件可以占据若干行和列,而且大小设定也是自由的。从上图我们可以清晰的看到整个画图板界面被划分为4行2

列的一个表格,我们先不用管某个单元格的大小,只管划分。
     这样五个具体的面板(我们使用JPanel对象进行填充)就构成了整个界面,上侧占据1行2列的工具选择面板(toolSelectPanel),左侧1行1列的某个工具的选项面板(toolConcretePanel),右侧的

drawPanel,下侧的colorPanel和statePanel
 
2.我们通过以下步骤为界面进行GridBagLayout布局
      1).设置主界面的布局管理器为GridBagLayout(不用指定行和列)
      2).为界面中的每一个组件(这里是JPanel对象)指定一个GridBagConstraints对象,通过设置该对象的属性值指出组件在
管理器中的布局方案
      3).通过下面的调用添加组件极其约束条件(GridBagConstraints对象)
        add(Component,constraints);
 
      我们有必要了解一下GridBagConstraints中各个属性的具体含义以便我们更好的进行个性化的布局
      @gridx,gridy:
       组件左上角所在的位置,如上图中左侧的面板在1行0列,则gridy=1,gridx=0。读者请注意这里的行对应的是gridy,列对应的是gridx
       @gridwidth,gridheight
       组件占据的行数和列数,如最上面的那个面板占了1行2列,则gridwidth=2,gridheight=1
       @weightx,weighty
       可以简单理解为组件大小变化的增量值,如设置weightx=100,组件会随着单元格而变化,设置weightx=0时,组件大小不会发生变化。当然weightx,weighty也可以设置成

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值