嗨,你好,下面我们一起学习呢,布局,
布局的管理。Java里面定义了很多种布局,那么最常用的
有5种布局,5种里面最常用的又有3种。一个是
流动式布局,一个是BorderLayout,一个是网格式布局。
那么流动式布局实际上我们把对象就跟我们在Word的里面写
文字一样一行一行的写,写完了,写满了自动到下一行。啊,写满了自动到
下一行,这个就是流动式布局。那对像一加进去以后,它自动的放这个位置。
然后另一种就是BorderLayout ,就是边框式布局。那么它把这个界面分成东、南、
西、北、中五个部份,因为它最多放五个对像。
这个就是边框式布局。还有另一个是 Grid--网格式布局有很多的网格。那这几种布局
都有一个特点就是说,它把对像add 添加进去以后呢
这些对像它的布局、它的位置甚至大小
它就是自动的与这个容器相适应, 我们下面来看其中的几个重点的地方。
一个的这就是流动式布局,那么流动式布局从左到右,
当我们把这个窗口变化以后它会自动的填满这个,所以这种布局
它不改变组件的大小,就是你加进去的这个组件,主要是改它
的位置,当它移动的时候。我们下面看看这个的效果,请看这里:
那这里我们用在程序里头加了很多的 组件的这个对像,这里的是按钮,new的按钮,
创建的这个按钮。那这些按钮对于整个窗体而言我们setLayout就是 new
FlowLayout,是个流动式布局。那么流动式布局,然后我们把
这些对像用add的方法加进去,add的方法加进去。这里面加了
8个对像,然后当 这个窗体的大小发生改变的时候
它就是一种流线的这种布局,实际上是一种自适应的对象,当然也是自适应。所以,这种方式
我们就不强制去制定这些位置,所以它就很方便。
这个FlowLayout的这个对像,它在 使用的时候、构造的时候可以加一些参数比如说
它的对齐方式,是左对齐、右对齐还是居中对齐。
然后呢,以及这个水平或垂直的间距。所以,它可以更详细的指定这个
流式布局的这些性质。
同样的,BorderLayout也是一样的,BorderLayout 它是把容器分成五个部份东、南、西、北、中五个部份。
当然,中间这个部份一般情况占的比重要大一些。
那至于在加的时候,我们在往里放东西的时候 也要指定它放到哪个地方,所以在add的时候要指明它的位置。
那我们下面也看看这个代码。请看这里:我们把这个
东、南、西、北、中加进去以后,当我们变化它的大小的时候
它就会自适应的改变这个每一个
对像的那个大小;在这里我们还是用按钮做例子。我们加了
一些按钮,那么这些按钮在加的时候我们要指明它是加到哪个位置。比如说
它是北边、南边还是东边还是西边还是中间,再开始呢setLayout (new BorderLayout())
然后再加进去的时候,它就把这些加进去的对象按照这种布局来进行处理了。
再看GridLayout网格式布局。那 这种布局实际上就是把它分成像一个表格式的,
分成多行多列,然后我们把对像加进去的时候它就自动的按照这个行列
数从左到右,然后再一行一行的把它放进去。那这个放了以后
当我们改变这个容器大小的时候,这里面的对像 也是自动跟着变换。我们在new GridLayout的时候
一定要指明它的行列数,我们下面再看看这个例子: 请看这里!这里也是一样我们把它,
它是可以自适应大小的,你看这样,那在这里 setLayout是GridLayout的4行5列,然后
我们把这个add这些button加进去以后它就会
自动的适应。除了我们最常用的3种,还有很多的布局。
那么比如说这个Card,这个卡片式布局,它实际上
有好多对像放到像一叠卡片一样,然后每次只显示一个。
还有像GridBagLayout,相当于比较复杂的,它是格网,但是这一个格网
可以几个格子占一定的空间,实际上就是这个表格里面 就相当于单元跟合并一样。所以,这几种布局
除了这个以外后面还有一些更复杂的一些布局,这里我们就不讲了。
那我们实际常用的就是这些对像,要注意它有一个默认的布局。那比如说,
我们这里的Container是容器,这个容器里面有
顶层的Window,里面有Frame、Dialog,这里面Frame
基层内又有一个JFrame和JDialog,那这左边的这几个
对像它是默认布局式Border,就是东、南、西、北、中。
那么容器里面有一个Panel,Panel这种或者Applet是继承了Panel;
那它是FlowLayout流动式布局。那么后来在Frame 里面它为了统一起见
虽然JApplet是Applet的子类,但是,JApplet它是顶层类的
所以后面也把它都统一成所有的这个JFrame、JDialong及JApplet
统一成BorderLayout;而面版是FlowLayout。所以我们在使用的时候
可以用它的默认布局,那如果不是的话,那我们自己呢
指定它,setLayout。除了这个以外,还有一种特殊的布局叫绝对布局。
所谓的绝对布局就是Layout(null),实际上就是没有布局;也就是它
不自动的跟着改变它的位置跟大小。所以,这样如果我们所加进的时候所有的对像
要指明的那个对像的大小,那就是要指明
对象的大小和位置。那所以这个绝对布局我觉得比较麻烦一点。
我们也看一个例子,请看这个绝对布局的 例子。那么绝对布局我们设定Layout(null)的时候
我们在往这些对像加进去,那么在加进去的时候
必须把这些对像的位置和大小设定,因为它没有自动的位置或大小。
所以这就是我们说的绝对布局,但绝对布局有它的好处, 就是说我们使用起来比较灵活。
当然也有不好的地方就是要指定位置和大小,
那容器盖改变以后,这里面的那些对像的位置和大小
它不会跟着变化。那我们实际使用的时候,我们刚才说了有几种布局就最常用的有3种布局;
那么实际在用的时候我们经常把这个容器嵌套起来使用,比如说,我们在这样一个
窗口里头那我们有不同的布局,里面有
几个按钮,那这里就是底下的几个按钮。然后这上面又是一个 显示区,比如说这个标签或者文本框。
那这样的话我们整个窗体的是一个BorderLayout,上面占据一个,里面这个Ce- ntre中心。
那在这里面又指定出去 ,那么也就是经常是一层又一层的这个对像;
那么为了指明一层又一层的对像,我们最常用的就是面版。下面我们看看这个代码。
请看这里,我们上面有个标签,然后底下这部份是有一个面版。
这个面板里边放四个按钮,所以我们在做的时候是怎么做的呢?首先这个面版的Layout是
一个GridLayout。我们把第四个按钮加到这里头 然后把这个标签和整个的
面板又加到整个的Frame里头。
所以是一层套一层,然后,一层里面又一层add 添加,加进去。所以,这是最典型的使用布局,
也就是一层套一层,而最常用的就是那个面版了。