Java-AWT局部管理器

Java布局管理器

容器中的组件的位置和大小是由布局管理器决定的。容器对布局管理器的特定实例保持一个引用。当容器需要定位一个组件时,它将调用布局管理器来做。当决定一个组件的大小时,同样如此。布局管理器完全控制容器内的所有组件。它负责计算并定义上下文中对象在实际屏幕中所需的大小。

在AWT中,给我们提供了五种布局管理器:

BorderLayout

FlowLayout

GridLayout

CardLayout

GridBagLayout

后两种不常用。

Window跟它的子类默认BorderLayout布局管理器,Panel及他的子类默认FlowLayout布局管理器

Flow--

与其他布局管理器不同,Flow布局管理器不限制它所管理的组件的大小,而是允许它们有自己的最佳大小

默认是居中放置组件

如果想在组件之间创建一个更大的最小间隔,可以规定一个界限。

当用户对由Flow布局管理的区域进行缩放时,布局就发生变化

1.下面的例子就是如何用类容器的setLayout()方法创建Flow布局对象并安装他们

2.-setLayout(new FlowLayout(int align,int hgap, int vgap));

3.-对其的值必须是FlowLayout.LEFT,FlowLayout.RIGHT,或FlowLayout.CENTER

4-例如:

5-setLayout(new FlowLayout(FlowLayout.RIGHT,20,40));

右对齐,组件之间水平间距20个像素,竖直间距40个像素

new FlowLaout(FlowLayout.LEFT);

左对齐,水平和竖直间距为缺省值:5;

new FlowLayout();

使用缺省的居中对齐方式,水平和竖直间距为缺省值:5;

Border管理器

Border布局管理器为在一个Panel或Window中放置组件提供一个更复杂的方案。Border布局管理器包括五个明显的区域:东,西,南,北,中。

北占据面板上方,东占据面板的右侧,等等。中间区域是在东,南,西,北都填满后剩下的区域。当窗口垂直延伸时,东,西,中区域也延伸;而当窗口水平延伸时,东,西,中区域也延伸

当窗口缩放时,按钮相应的位置不变化,但其大小改变

BorderLayout是Frame类的默认布局管理器

BorderLayout将整个容器的布局划分为东,西,南,北,中五个区域,组件只能被添加到指定的区域。

如不指定组件的加入部位,则默认加入到Center区域

每个区域只能加入一个组件,如加入多个,则先前加入的组件会被遗弃


Grid管理器

Grid布局管理器为放置组件提供了灵活性。用许多行和栏来创建管理程序。然后组件就填充到由管理程序规定的单元中。

比如,由语句new GridLayout(3,2)创建的有三行两栏的Grid布局能产生六个单元

Grid布局管理器总是忽略组件的最佳大小。所有单元的宽度是相同的,是根据单元数对可用宽度进行平分而定的。同样地,所有单元的高度是相同的,是根据行数对可用高度进行评分而定的


Card管理器

Card布局管理器能将界面看作一系列的卡,其中的一个在任何时候都可见,用add()方法来将卡添加到Card布局中。Card布局管理器的show()方法应请求转换到一个新卡中


GridBag管理器

GridBag布局管理器在网格的基础上提供复杂的布局,但它允许单个组件在一个单元中而不是填满整个单元那样地占用他们的最佳大小。网格包布局管理器也允许单个组件扩展成不止一个单元。



布局管理器总结:

-Frame是一个顶级窗口

-Frame的缺省布局管理器为BorderLayout

-Panel无法单独显示,必须添加到某个组件中。

-Panel的缺省布局管理器为FlowLayout

-当把Panel作为一个组件添加到某个容器中后,该Panel仍然可以有自己的布局管理器,因此,可以利用Panel使得BorderLayout中某个区域显示多个组件。

在程序中安排组件的位置和大小时,应注意:

-容器中的布局管理器负责各个组件的大小和位置,因此用户无法在这种情况下设置组件的这些属性。如果试图使用Java语言提供的setLocation(),setSize(),setBounds()等方法,则都会被布局管理器覆盖

-如果用户确实需要亲自设置组件大小或位置,则应取消该容器的布局管理器,方法为:

setLayout(null);

阅读更多
换一批

没有更多推荐了,返回首页