为了实现跨平台性并获得动态的布局效果,java 在容器中设置了布局管理器负责对容器内的组件进行管理。布局管理器决定了容器内组件的布局、排列顺序、大小、位置等。
在这里简单总结一下java常用的几个布局管理器的特点和用法。
- FlowLayout —— 流式布局管理器
- BorderLayout —— 边界布局管理器
- GridLayout —— 表格布局管理器
- CardLayout —— 卡片布局管理器
- GridBagLayout —— 网格包布局管理器
- BoxLayout —— 箱式布局管理器
布局管理器 | 特点 | 方法及使用 |
FlowLayout——流式布局管理器 | Panel 和 Applet 默认布局管理器,容器内组件从左到右、从上到下逐行摆放。默认居中。 |
例如:FlowLayout(FlowLayout.LEFT, 10,10)
|
BorderLayout——边界布局管理器 | Window、Dialog和Frame 默认布局管理器,将容器分为5个区:East、South、West、North、Center。add方法默认添加到Center。当容器窗口大小改变时,各组件相对位置不变,大小改变。 |
|
GridLayout——网格布局管理器 | 将容器分为n行m列,每个网格单元可容纳一个组件,组件将充满该网格单元,组件从左到右,从上到下填充。 |
|
CardLayout——卡片布局管理器 | 两个或更多组件(一般是panel)共享同一显示空间,组件像卡片一样叠放,一个时刻只有最上面的是可见的。 |
|
GridBagLayout——网格包布局管理器 | 不需要组件尺寸一致,容许组件扩展到多行多列。每个组件占用一个或者多个单元,所占用的网格单元成为组件的显示区域。每个组件都有一个GridBagContraints类对象来指定组件的显示区域在网格中的位置,以及在显示区域中应该如何摆放组件。 |
|
BoxLayout——箱式布局管理器 | 将组件垂直摆放在一列或者水平摆放在一行,由BoxLayout.X_AXIS和BoxLayout.Y_AXIS指定。 |
如果不适用系统提供的布局管理器,即采用无布局管理器setLayout( null ),则需要使用setLocation()、setSize()、setBounds()等手工设置组件的大小和位置,这是设置绝对位置,当窗口大小改变时,无法重新改变组件的大小和位置,一般不推荐使用。
发现对布局管理器写的很详细的
http://blog.youkuaiyun.com/zsy_gemini/article/details/4049078。