关于布局管理器,可谓是比较纠结的事情,苦苦挣扎了好久,现在就布局管理器,我有自己的一些想法,给大家分享一下:
就拿XP画图板来说,你说,一个好好的窗体,为啥要这个贴一块,那个补一块呢,这不是给自己添堵嘛!确实,一开始,我也搞不明白,后来,在开发中,渐渐地发现了贴面板的好处。
一方面:我们知道java有一个很大的优点,那就是可移植性,我们完成一个项目,往往需要很多人来完成,而且,每个人的思路和方法不同,如果,只在一个JFrame窗体上面的话,造成的后果就是,很难移植,带来了不便理性。但是要是用贴面板的方法的话,就可以很方便的将别人的代码拿过来,作为自己的来用,带来了方便。总的来说,就是,我们一开始只有一个窗体,后来,可以再上面利用贴面板的方式,来组装,几块面板一贴,妥了,一个画图板完成了,就像是,面板其实就是一个载体。
另一方面,就是涉及到布局的问题了,我们知道,我们常用的布局管理器,大概有BorderLayout, FlowLayout, GridLayout这三种,如果说,我们用到的组件很多的话,不可能在一个窗体上,设置很多布局,一个布局显得有很困难,所以,还是,贴贴的好,贴贴更省心。
下面我大致说一下,我们常用的LayoutManager,我们知道,LayoutManager是一个接口,所有的布局管理器都是其实现类。
(1)FlowLayout:
FlowLayout() |
|
FlowLayout(int align) |
|
FlowLayout(int align, int hgap, int vgap) |
各个参数的意义:
align - 对齐值
hgap - 组件之间以及组件与 Container 的边之间的水平间隙
vgap - 组件之间以及组件与 Container 的边之间的垂直间隙
(2)BorderLayout:
BorderLayout的构造方法 |
|
BorderLayout() |
|
BorderLayout(int hgap, int vgap) |
各个参数的意义:
hgap - 组件之间以及组件与 Container 的边之间的水平间隙
vgap - 组件之间以及组件与 Container 的边之间的垂直间隙
了解了这些,最重要的来了,这些布局管理器该怎么用呢,这确实是个疑问:
首先,我们要了解,我们常用的容器,在GUI初级开发中,现在我用到的都是JComponent的子类,我现在用到的就以下几个,JFrame,JWindow,JPanel,JLable,JTable等,其他的可以查阅JDK帮助文档,
对于JFrame和JWindow这样的顶层框架来说,默认的布局管理器是边界布局(BorderLayout);JPanel默认的布局管理器为FlowLayout。
如果说,我们要替换原来的布局管理器,怎么办呢?
(1)创建布局管理器对象,用它的对象,对象名.setLayout(传入相应的参数),就可以了;
(2)此外,我们还可以这么办,不用布局管理器,setLayout(null);取消布局管理器,然后调用,setBounds(int x, int y, int width, int height)移动组件并调整其大小。由 x
和 y
指定左上角的新位置,由 width
和 height
指定新的大小
到这里,布局管理器的基本用途就是这个样子了哈,有什么好的方法一起分享哈!