暑假自学java第二十四天
java布局管理
Java的GUI组件都放置在容器中,他们的位置是由容器的布局管理器来管理的.布局管理器是使用布局管理器类创建的.。我们可以使用setLayout()方法在容器中设置布局管理器
1. FlowLayout流式布局
FlowLayout(流式布局)是最简单布局管理器. Jpanel容器默认的布局管理器
流式布局,按照组件添加的顺序,从左到到右将组件排列在容器中.当放满一行,就开始新的一行.在FlowLayout有3个常量FlowLayout可以指定组件的对齐方式.
LEFT 每一行组件都应该是左对齐的
RIGHT 每一行组件都应该是右对齐的
CENTER 每一行组件都应该是居中的
还可以指定组件之间的以像素为单位的间隔.:
int getHgap()
获取组件之间以及组件与 Container 的边之间的水平间隙。
int getVgap()
获取组件之间以及组件与 Container 的边之间的垂直间隙。
void setHgap(int hgap)
设置组件之间以及组件与 Container 的边之间的水平间隙。
void setVgap(int vgap)
设置组件之间以及组件与 Container 的边之间的垂直间隙。
这个布局管理器的对其方式默认值是CENTER
这个布局管理器的水平间隔默认值是 5个像素
这个布局管理器的垂直间隔默认是是5个像素
FlowLayout()
构造一个新的 FlowLayout,它是居中对齐的,默认的水平和垂直间隙是 5 个单位。
FlowLayout(int align)
构造一个新的 FlowLayout,它具有指定的对齐方式,默认的水平和垂直间隙是 5 个单位。
FlowLayout(int align, int hgap, int vgap)
创建一个新的流布局管理器,它具有指定的对齐方式以及指定的水平和垂直间隙。
2. GridLayout网格布局
GridLyaout是以网格形式管理组件的.组件按照他们添加的顺序从左到右排列,显示第一行,接着是第二行,一次类推.
Gridlayout可以指定网格中的行数和列数
规则如下:
行数和列数可以是0但是不能两者都为0.
如果一个为0另外一个不为0,那么不为0的行或列的大小就是固定的,为0的行或者列有布局管理器动态决定.
例如:如果指定一个网格有0行3列10个组件,GirdLayout会创建3个固定的列和行,最后一行只有一个组件.如果指定一个网格有3行0列10个组件,GridLayout就会创建3行4列,最后一行包含2个组件.
如果行数和列数都不为0,那么以行数为依据.所以行数是固定的,布局管理器会动态的计算列数.例如,如果指定一个网格有3行3列10个组件,GridLayout会创建3个固定的行和4列,最后一行包含2个组件.
构造方法:
GridLayout()
创建具有默认值的网格布局,即每个组件占据一行一列。
GridLayout(int rows, int cols)
创建具有指定行数和列数的网格布局。
GridLayout(int rows, int cols, int hgap, int vgap)
创建具有指定行数和列数,水平间隔,垂直间隔的网格布局。
int getRows()
获取此布局中的行数。 默认值是1
int getColumns()
获取此布局中的列数。 默认值是1
int getHgap()
获取组件之间的水平间距。 默认值是0
int getVgap()
获取组件之间的垂直间距。默认值是0
设置
void setRows(int rows)
将此布局中的行数设置为指定值。默认值是1
void setColumns(int cols)
将此布局中的列数设置为指定值。 默认值是1
void setHgap(int hgap)
将组件之间的水平间距设置为指定值。 默认值是0
void setVgap(int vgap)
将组件之间的垂直间距设置为指定值。默认值是0
如果使用setLayout(new GridLayout(3,10))替换setlayout语句,还是会得到3行2列,因为行的参数非零,所以列的参数会被忽略.列的实际参数是由布局管理器计算出来的.
3,BorderLayout边框布局
边框布局,JFrame 容器默认的布局管理器是边框布局.该管理器将容器非为东西南北中5个区域.
我们使用add(Component,index)方法可以将组件添加进到BorderLayout中,index是一个常量,有5个值
EAST
东区域的布局约束(容器右边)。
WEST
西区域的布局约束(容器左边)。
SOUTH
南区域的布局约束(容器底部)。
NORTH
北区域的布局约束(容器顶部)。
CENTER
中间区域的布局约束(容器中央)。
构造函数:
BorderLayout()
构造一个组件之间没有间距的新边框布局。
BorderLayout(int hgap, int vgap)
构造一个具有指定组件间距的边框布局。
方法:
int getHgap()
返回组件之间的水平间距。
int getVgap()
返回组件之间的垂直间距。
void setHgap(int hgap)
设置组件之间的水平间距。 默认值是0
void setVgap(int vgap)
设置组件之间的垂直间距。默认值是0
组件会根据他们最合适的尺寸和在容器中的位置来放置,南北组件可以水平拉伸,东西组件可以垂直拉伸,中央组件既可以水平拉伸也可以垂直拉伸.
注意: 如果布局管理器为Border管理器,调用add方法,没有说明组件的位置(东西南北中)默认是center.
所以
add(new JButton("ok"))和add(new JButton("ok"), BorderLayout.CENTER )
效果是一样的.
如果在Border容器中添加2个组件,都没有指定位置,那么只会显示最后一个组件
add(new JButton("ok1"))和add(new JButton("ok2")) 只会显示ok2

注意: 面板容器是一个轻量级的容器,该容器不能单独的使用,必须依赖与外层的顶层容器(JFrame)
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决
· 提示词工程——AI应用必不可少的技术