容器

容器,我的理解是可以包容其他东西的玩意。它可以是一个盒子,可以是一个虚拟化的物品,可只要能包裹住其他存在质体的东西,那么都可以称作是容器。例如:JPanel组件和JScollPane组件两者都是容器也是组件。
既然有容器,那么容器中的布局就必不可少了。不然不规矩的摆放物品,人类看不习惯,我也看不习惯 😃

本篇内容,将说明java JFrame窗体里容器中几类布局。
说明:所有在JFrame窗体里的容器布局都会使用setLayout()方法,采用的布局参数都将放进这个方法里

绝对布局

调用窗体容器的setLayout()方法,设置为null值,这样就是绝对布局。默认情况下,布局都是绝对布局。

JAVA窗口的setbounds java窗口的布局_JAVA窗口的setbounds

在绝对布局下,设置的所有组件,都必须设置坐标和大小。坐标不设置,那么组件将会在最左上角显示,但是如果大小不设置,组件将不可见。
而且在绝对布局中,宽度若是不够给组件显示的空间,组件将不会显示。

流布局

JAVA窗口的setbounds java窗口的布局_流布局_02


流布局有一个好处,它可以自动的为组件分配位置。

它还提供了对于对齐方式设置的方法。

在为容器设置setLayout方法时,参数可以是对象

new FlowLayout(对齐方式, 水平间距, 垂直间距)

流布局使用的是FlowLayout()类,在这个类中设定了三个对于流布局的设置。

JAVA窗口的setbounds java窗口的布局_JAVA窗口的setbounds_03


我将设置流布局的参数进行了更改,我把对齐方式更改为左对齐(默认居中),水平间距30px,垂直间距30px。这样,两图的差距不就很明显了嘛。

除了左对齐,居中,还有其他的对齐方式

LEFT:左对齐 RIGHT:右对齐
CENTER:居中(默认)
LEADING:左边界对齐
TRAILING:右边界对齐

对齐方式,一律采用FlowLayout对象来调用。

边界布局

边界布局,实例化BorderLayout - 边界布局提供了5块区域,分别是:东南西北和中间区域;

其中,北和南的布局要比东西布局要长,但是东西两布局的宽度要比北南布局要宽。四个区域占据面积其实是差不多的。

JAVA窗口的setbounds java窗口的布局_JAVA窗口的setbounds_04


在边界布局中,若是整体容器高度不够,边界布局将会牺牲掉西中间东三块区域的显示,来保全北和南两块显示区域,例如这样:

JAVA窗口的setbounds java窗口的布局_JAVA窗口的setbounds_05


在容器设置了边界布局,在调用add()方法添加组件的时候,可以输入第二个参数用来设置该组件在容器中的位置。以下是参数列表:

CENTER:中间
EAST:东部
WEST:西部
SOUTH:南部
NORTH:北部

对齐统一使用BorderLayout对象调用上述常量参数

需要注意:在边界布局里,每一块区域,只能包含一个组件!再向某一区域添加组件时,原来的组件会被覆盖掉!