在用户使用 Java Swing 进行用户界面开发过程中,会碰到如何对 Java Swing 的控件进行布局的问题。Swing 的控件放置在容器 (Container) 中,容器就是能够容纳控件或者其它容器的类,容器的具体例子有 Frame、Panel 等等。容器需要定义一个布局管理器来对控件进行布局管理
一、容器的默认布局管理器
各容器都有默认的布局管理,见下表:
容器 |
默认布局方式 |
|
顶层容器 |
JFrame |
BorderLayout(边界布局) |
JDialog |
BorderLayout(边界布局) |
|
JApplet |
FlowLayout(流式布局) |
|
中间容器 |
JPanel |
FlowLayout(流式布局) |
三、布局管理器所属类包
所属类包 |
布局管理器名称 |
说明 |
Java.awt |
FlowLayout(流式布局) |
组件按照加入的先后顺序按照设置的对齐方式从左向右排列,一行排满到下一行开始继续排列 |
BorderLayout(边界布局) |
容器划分为东、西、南、北、中五个区域,每个区域只能放置一个组件。 |
|
GridLayout(网格布局) |
容器的空间划分成M×N列的网格区域, 每个区域只能放置一个组件。 |
|
CardLayout(卡片布局) |
如同一叠牌,每个牌对应一个组件,但每次只能显示其中的一张牌。适用于在一个空间中防止多个组件的情况 |
|
GridBagLayout(网格包布局) |
GridLayout的升级版,组件仍然是按照行、列放置,但是每个组件可以占据多个网格 |
|
Java.swing |
BoxLayout(箱式布局) |
允许在容器中纵向或者横向防止多个控件 |
SprigLayout(弹簧布局) |
根据一组约束条件放置控件 |
|
无 |
空布局 |
不使用布局管理器,按照控件自身提供的大小、位置信息放置控件 |