在Swing中,每个组件都得给它放置在容器中合适的位置,展示在容器中的方法及基本的布局功能。下面码农工就为大家介绍一下他们的功能和用法。
一、边框布局管理器
当窗体不指定布局类型是,Swing组件的布局方式默认为边界(BorderLayout)布局管理器,也叫边框布局管理器,布局管理器将容器划分为东西南北中五个区域,当容器调用Container类的add()方法时,可以将组件添加到你想要放置的区域,只需调用BorderLayout类中的以下成员变量即可:
BorderLayout.NORTH
BorderLayout.SOUTH
BorderLayout.EAST
BorderLayout.WEST
BorderLayout.CENTER
边界布局管理器
二、流式布局管理器
它是最基本的布局管理器,所谓的流式布局管理器,顾名思义,像流水一样地按顺序从左到右,从上到下,默认每一行都为居中排列,但也可以自行设置。FlowLayout类中有以下构造方法:
public FlowLayout()
public FlowLayout(int alignment)
public FlowLayout(int alignment,int horizGap,int vertGap)
其中的alignment参数表示使用流式布局管理器后组件在每一行的摆放位置。其中的horizGap与vertGap两个参数分别以像素为单位指定组件之间的水平间隔与垂直间隔。
流式布局管理器
三、网络布局管理器
顾名思义,它是将容器划分为一个个相同大小的网格,并且空格的个数由网格的行数与列数决定。它主要有以下常用的构造方法:
public GridLayout(int rows, int columns)。
public GridLayout(int rows, int columns, int horizGap, int vertGap)
上述参数rows与columns参数表示网格的行数与列数,这两个参数只有一个可以为0,代表一行或者一列的多个组件,参数horizGap和vertGap分别指定网格之间的水平距离和垂直距离。
网络布局管理器
四、网络组布局管理器
网络组布局管理器由GridBagLayout类实现,它实现了一个动态的矩形网格,在网络组布局管理器中默认的布局方式为流式布局。
下面讲解一下GridBagLayout类中的各个属性及用法:、
(1):gridx和gridy
它们分别设置组件起始位置所在单元格行数与列数的索引值。
(2):gridwidth和gridheight
它们分别用来设置组件占用网络组的行数与列数(即宽度和高度)。
(3):anchor属性
用来设置组件在其所在显示区域的显示方位(一个9个方位,比地图上多了一个“中心”)。
(4):fill
用来设置组件的填充方式,当单元格显示区域的面积大于组件面积时,显示组件可能不必占用所有的显示区域。指定组件填充网格的方式,可以是如下值:GridBagConstraints.NONE(默认值)、GridBagConstraints.HORIZONTAL(组件横向充满显示区域,但是不改变组件高度)、GridBagConstraints.VERTICAL(组件纵向充满显示区域,但是不改变组件宽度)以及 GridBagConstraints.BOTH(组件横向、纵向充满其显示区域)。
(5):ipadx和ipady
这个属性用来修改组件的首选大小。为正数,则在首选的基础上正大指定的宽度和高度;为负数,则在首选的基础上减小指定的宽度和高度。
(6):insets
指定组件显示区域的外部填充,即组件与其显示区域边缘之间的空间,默认组件没有外部填充。
(7):weightx和weighty
用来指定在容器大小改变时,增加或减少的空间如何在组件间分配,默认值为 0,即所有的组件将聚拢在容器的中心,多余的空间将放在容器边缘与网格单元之间。weightx 和 weighty 的取值一般在 0.0 与 1.0 之间,数值大表明组件所在的行或者列将获得更多的空间。
网络组布局管理器
五、卡片布局管理器
CardLayout(卡片布局管理器)能够帮助用户实现多个成员共享同一个显不空间,并且一次只显示一个容器组件的内容。
CardLayout 布局管理器将容器分成许多层,每层的显示空间占据整个容器的大小,但是每层只允许放置一个组件。CardLayout 的构造方法如下。
CardLayout():构造一个新布局,默认间隔为 0。
CardLayout(int hgap, int vgap):创建布局管理器,并指定组件间的水平间隔(hgap)和垂直间隔(vgap)。
卡片布局管理器