在用户使用 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(弹簧布局) | 根据一组约束条件放置控件 | |
无 | 空布局 | 不使用布局管理器,按照控件自身提供的大小、位置信息放置控件 |