快速业务通道

Java布局管理器在现实工程中的应用 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-23
nel的实例的align设置成alClient。这样BorderLayout就成为c的布局管理器。因为在BorderLayout中,如果使用BorderLayout.

CENTER的方式则达到这种目的。那么panelButton则应该使用BorderLayout.SOURTH的方式布局。于是产生了一下代码

c.setLayout(new BorderLayout());//这一句可以省略,因为frame的默认布局是 Borderlayout。 c.add(panelDataContent,BorderLayout.CENTER); c.add(panelButton,BorderLayout.SOUTH);

我们只需把以上的代码代替注释5,就实现了第一次分组的布局。接着我们是用同样的布局管理来实现第二次分组,也就是数据组件的分组。

panelDataContent.setLayout(new BorderLayout());//不可省略,JPanel的默认布局是 FlawLayout。 panelDataContent.add(panelDataList,BorderLayout.CENTER); panelDataContent.add(panelDataEditor,BorderLayout.SOUTH);

将以上代码代替注释3的位置即可。

Java布局管理器在现实工程中的应用(2)

时间:2010-12-04

下面我们来分别处理三个JPanel(panelDataList,panelDataEditor,panelButton)上的控件的布局。

在处理这个问题之前我也揭示(不是解释)一点java布局管理对空间大小的影响,这里我不用“解释”的原因在于我只是了解到这一点,而没有深入的研究原理何在。FlowLayout保持由他管理的容器上的控件的大小(应该是preferred size),GridLayout从来不理会这些空间的大小,只是把控件完全填充由GridLayout划分的格子但是我们应该注意到GridLayout讲一个容器划分成等面积大小的格子,一次不适合我们以上的应用)。而BorderLayout对空间的控制介于以上两者之间。BorderLayout使放在NORTH和SOURTH的控件保持合适的高度,是放置在EAST和WEST的控件保持合适的宽度,使放在CENTER的控件占据剩余的所有空间。

这样一来对于dataList的放置我们有两种一种是使用BorderLayout布局管理,把dataList放在BorderLayout.CENTER的位置,一种是使用GridLayout把panelDataList划分一个格子。事实也是如此。开发者可以根据自己的喜好从这两种布局中选出一种。

//panelDataList.setLayout(new BorderLayout()); //panelDataList.add(listData,BorderLayout.CENTER); panelDataList.setLayout(new GridLayout(1,1)); panelDataList.add(listData);

至于panelButton的布局格式因该选择FlowLayout,也许有的读者会提出为什么不选择GridLayout,因为如果使用这种布局方法,地区可以保证按钮全部在一排,但是当用户改变窗体大小时,会出现按钮过长或过短的情形。但是使用FlowLayout的缺点在于用户使宽度小于按钮的宽度和时,会使一些按钮不可见。

panelButton.setLayout(new FlowLayout());//可以省略。因为FlowLayout时JPanel的

默认布局方式

panelButton.add(buttonNew);

对于panelDataEditor的布局管理,需要根据不同的情况来进行判断处理,而我认为最佳的选择时GridBagLayout。当然如果排放的空间相当简单,使用GridBagLayout反而体现不出它的优越性。由于这一部分的随机性,这里不再介绍。一下使我在写这样文章时的全部代码,提供给大家以供参考。

/* * Created on 2003-7-14 */ import javax.swing.*; import java.awt.*; /** * @author idilent * Supporting the paper which name is "java布局管理器在现实工程中的应用" */ public class LayoutSample { public static void main(String[] args) { JFrame sampleFrame = new JFrame("Sample Frame for Manager Layout"); JPanel panelDataContent = new JPanel(); // 数据组件容器 JPanel panelDataList = new JPanel(); // 数据列表容器 JList listData = new JList(); //这里可以使用两种方

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号