理论教育 Java程序设计-常用布局示例

Java程序设计-常用布局示例

时间:2023-10-18 理论教育 版权反馈
【摘要】:图8.4BorderLayout布局Example8_3.javaShowBorderLayout.java2.FlowLayout 流式布局按组件加入的顺序,按水平方向排列,排满一行换下一行继续排列。图8.5FlowLayout布局Exampe8_4.javaShowFlowLayout.java3.GridLayout网格布局把Container按指定行列数分隔出若干大小相等的网格,每一个网格按顺序放置一个控件,组件宽高自动撑满网格。例如,指定了3行和1列,在布局中共添加了6个组件,则它们将显示为3行2列。在Example8_5中,窗口中的JLabel及JTextField组件采用3行2列的GridLayout布局放于窗口中,如图8.6所示。

Java程序设计-常用布局示例

常用的布局管理器有:

1.BorderLayout边界布局

JFrame窗口类的默认布局方案为BorderLayout布局。BorderLayout边界布局把Container按方位分为5个区域(东、西、南、北、中),中间的区域最大,表示方位的5个常量如下:

在采用BorderLayout布局的容器加入组件时需要指定组件放在哪个区域,若不指定则默认把组件放在中心区域,后加入的组件会覆盖前面加入的组件。如将一个button(按钮组件)放在container容器对象南面:

container.add(button, BorderLayout.SOUTH);

容器使用BorderLayout布局管理器,能最多添加5个组件,若加入的组件多于5个,则可以在中间容器加入多个组件,再加入到容器的5个区域之一位置。

BorderLayout构造方法:

BorderLayout():构造一个组件之间没有间距的布局。

BorderLayout(int hgap, int vgap):构造一个具有指定组件间距的边框布局。

【例8.3】在Example8_3中,窗口中的5个JButton按钮组件采用BorderLayout布局放于窗口的5个区域中,如图8.4所示。

图8.4 BorderLayout布局

Example8_3.java

ShowBorderLayout.java

2.FlowLayout 流式布局

按组件加入的顺序,按水平方向排列,排满一行换下一行继续排列。排列方向(左到右或右到左)取决于容器的componentOrientation属性,该属性用容器的applyComponen tOrientation(ComponentOrientation o)方法设置,o的值如下:

ComponentOrientation.LEFT_TO_RIGHT(默认)。

ComponentOrientation.RIGHT_TO_LEFT。

同一行(水平方向)的组件的对齐方式由 FlowLayout 的align属性确定,它可能的值如下:

FlowLayout.LEFT:左对齐。

FlowLayout.CENTER:居中对齐(默认)。

FlowLayout.RIGHT:右对齐。

FlowLayout.LEADING:与容器方向的开始边对齐,例如,对于从左到右的方向,则与左边对齐。

FlowLayout.TRAILING:与容器方向的结束边对齐,例如,对于从左到右的方向,则与右边对齐。

如将设置了flowLayout布局的容器内加入的组件按每行左对齐方式进行排列:

FlowLayout的构造方法:

FlowLayout():默认居中对齐,水平和垂直间隙是5个单位。

FlowLayout(int align):指定对齐方式,默认的水平和垂直间隙是5个单位。

FlowLayout(int align, int hgap, int vgap):指定对齐方式同时设计水平和竖直间隙。

【例8.4】在Example8_4中,窗口中的JLabel及JTextFild组件采用FlowLayout布局放于窗口中,如图8.5所示。

图8.5 FlowLayout布局

Exampe8_4.java

ShowFlowLayout.java

(www.daowen.com)

3.GridLayout网格布局

把Container按指定行列数分隔出若干大小相等的网格,每一个网格按顺序放置一个控件,组件宽高自动撑满网格。

GridLayout网格布局以行数和总数优先,通过构造方法或setRows和setColumns方法将行数和列数都设置为非零值时,指定的列数将被忽略。列数通过指定的行数和布局中的组件总数来确定。例如,指定了3行和1列,在布局中共添加了6个组件,则它们将显示为3行2列。仅当将行数设置为零时,指定的列数才对布局有效。

构造方法:

GridLayout():默认构造,将Container分为一行,列数由加入的组件个数决定。

GridLayout(int rows, int cols):创造一个指定行数和列数的网格布局。

GridLayout(int rows, int cols, int hgap, int vgap):指定行数和列数的网格布局,并指定网格间水平和垂直网格间隙。

【例8.5】 在Example8_5中,窗口中的JLabel及JTextField组件采用3行2列的GridLayout布局放于窗口中,如图8.6所示。

Example8_5.java

图8.6 GridLayout布局

ShowGridLayout.java

注:如果使用setLayout(new GridLayout(3,10))替换setlayout语句,还是会得到3行2列,因为行的参数非零,所以列的参数会被忽略,列的实际参数是由布局管理器计算出来的。

4.CardLayout卡片布局

将Container中的每个组件看作一张卡片,一次只能显示一张卡片,默认显示最先放的那一张卡片。

常用方法:

CardLayout():创建一个间距大小为0的卡片布局。

CardLayout(int hgap, int vgap):创建一个指定水平和垂直间距大小的卡片布局。

void first(Container parent):显示放入容器中的第一张卡片。

void last(Container parent):显示放入容器中的最后一张卡片。

void next(Container parent):显示下一张卡片,当前卡片是最后一张时,自动循环显示第一张卡片内容。

void previous(Container parent):显示上一张卡片,当前卡片是第一张时,自动循环显示最后一张卡片内容。

void show(Container parent, String name):显示指定名称的组件。指定名称的组件在添加组件到容器时,指定名称。

5.BoxLayout箱式布局

将Container中的多个组件按水平或垂直的方式排列。Swing 提供了一个实现了BoxLayout 的容器组件Box,使用 Box 提供的静态方法,可快速创建水平或垂直箱容器。如:

Box 内的组件之间默认没有空隙并居中,如果想在组件之间(或头部/尾部)添加空隙,可以在其中添加一个影响布局的不可见组件。Box 提供了三种用于填充空隙的不可见组件:glue、struts 和 rigidAreas。

1)创建胶状(宽/高可伸缩)的不可见组件(glue)2)创建固定宽度或高度的不可见组件(struts)

3)创建固定宽高的不可见组件(rigidAreas)

6.null绝对布局

绝对布局指将容器的布局管理器设置为null,容器中组件放置位置是通过设置组件在Container中的坐标位置来确定的。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈