Java布局管理器在现实工程中的应用
http://tech.ddvip.com 2006年11月24日 社区交流
本文详细介绍Java布局管理器在现实工程中的应用
以我个人的审美观点和便利性角度的考虑,我会选择把panelButton放在下面,同时我们应该考虑到panelDataContent应该占据除了panelButton之外所有sampleFrame空间,就像是在使用Delphi是我们将一个TPanel的实例的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的位置即可。
下面我们来分别处理三个JPanel(panelDataList,panelDataEditor,panelButton)上的控件的布局。
在处理这个问题之前我也揭示(不是解释)一点java布局管理对空间大小的影响,这里我不用“解释”的原因在于我只是了解到这一点,而没有深入的研究原理何在。FlowLayout保持由他管理的容器上的控件的大小(应该是preferred size),GridLayout从来不理会这些空间的大小,只是把控件完全填充由GridLayout划分的格子但是我们应该注意到GridLayout讲一个容器划分成等面积大小的格子,一次不适合我们以上的应用)。而BorderLayout对空间的控制介于以上两者之间。BorderLayout使放在NORTH和SOURTH的控件保持合适的高度,是放置在EAST和WEST的控件保持合适的宽度,使放在CENTER的控件占据剩余的所有空间。
责编:豆豆技术应用