About"Layout"
About"Layout"
漂亮的布局至关重要,有时候功能实现,程序却丑的不堪入目,确实蛋疼无比。
以下是比较常见的layout:
包 | 类 | 特点 |
java.awt | CardLayout | 将组件象卡片一样放置在容器中,在某一时刻只有一个组件可见 |
java.awt | FlowLayout | 将组件按从左到右而后从上到下的顺序依次排列,一行不能放完则折到下一行继续放置 |
java.awt | GridLayout | 形似一个无框线的表格,每个单元格中放一个组件 |
java.awt | BorderLayout | 将组件按东、南、西、北、中五个区域放置,每个方向最多只能放置一个组件 |
java.awt | GridBagLayout | 非常灵活,可指定组件放置的具体位置及占用单元格数目 |
Javax.swing | BoxLayout | 就像整齐放置的一行或者一列盒子,每个盒子中一个组件 |
Javax.swing | SpringLayout | 根据一组约束条件放置子组件 |
Javax.swing | ScrollPaneLayout | 专用于JScrollPane,含一个Viewport,一个行头、一个列头、两个滚动条和四个角组件 |
Javax.swing | OverlayLayout | 以彼此覆盖的形式叠置组件 |
Javax.swing | ViewportLayout | JViewport的默认布局管理器 |
注意:
Flow Layout - 是Panel和Applet缺省的布局管理器。
Border Layout - 是Window和Dialog缺省的布局管理器,即也是Frame缺省的布局管理器。默认添加到center位置。
Flow layout---管理器不对其component的大小加以限制,允许component保持其自然的尺寸,即"是多大就有多大"。
Border layout---一旦东南西北四个区被填充后,剩下的空间都留给中区。当窗口水平扩展时,北、南、中三区得到扩展,垂直扩展时,东、西、中三区得到扩展。对应Border布局管理器的五个区域,一般每个区域只能有一个component, 若在一个区域中加上多个component,则只有最后加上的那个是可见的。
Grid layout---当Grid布局管理器对应的窗口发生变化时,内部component的相对位置并不变化,只有大小发生变化。
Grid布局管理器总是忽略component倾向的大小(prefered size),它把每个component的大小设置成相同的。
如果想让组件的大小不随窗体大小改变而改变,用flowlayout。
另外一篇文章写得很好,推介一下:
http://mouer.iteye.com/blog/901068