词条 | GridBagConstraint |
释义 | java.awt.GridBagLayout:一个灵活的布局管理器,它不要求组件的大小相同便可以将组件垂直、水平或沿它们的基线对齐。每个 GridBagLayout 对象维持一个动态的矩形单元网格,每个组件占用一个或多个这样的单元,该单元被称为显示区域。每个由 GridBagLayout 管理的组件都与 GridBagConstraints 的实例相关联。Constraints 对象指定组件的显示区域在网格中的具体放置位置,以及组件在其显示区域中的放置方式。除了 Constraints 对象之外,GridBagLayout 还考虑每个组件的最小大小和首选大小,以确定组件的大小。网格的总体方向取决于容器的 ComponentOrientation 属性。对于水平的从左到右的方向,网格坐标 (0,0) 位于容器的左上角,其中 X 向右递增,Y 向下递增。对于水平的从右到左的方向,网格坐标 (0,0) 位于容器的右上角,其中 X 向左递增,Y 向下递增。 要使用GridBagLayout,必须使用GridBagConstraints对象来指定GridBagLayout中组件的位置。 GridBagLayout类的setConstraints方法用Component和GridBagConstraints作为参数来设置Component的约束。 构造方法: GridBagLayout():创建网格包布局管理器。 常用方法: void setConstraints(Component comp, GridBagConstraints constraints):设置此布局中指定组件的约束条件。 java.awt.GridBagConstraints:用于指定使用 GridBagLayout 类布置的组件的约束。 构造方法: GridBagConstraints(): 创建一个 GridBagConstraint 对象,将其所有字段都设置为默认值。 GridBagConstraints(int gridx, int gridy, int gridwidth, int gridheight, double weightx, double weighty, int anchor, int fill, Insets insets, int ipadx, int ipady):创建一个 GridBagConstraints 对象,将其所有字段都设置为传入参数。 gridx:指定包含组件的显示区域开始边的单元格.[默认值为 RELATIVE。gridx 应为非负值。] 其中行的第一个单元格为 gridx=0。组件显示区域的开始边指的是水平的、从左到右的容器的左边缘,以及水平的、从右到左的容器的右边缘。值 RELATIVE 指定将组件放置在添加此组件之前刚刚添加到容器中的组件的后面。 gridy:指定位于组件显示区域的顶部的单元格.[默认值为 RELATIVE。gridy 应为非负值。] 其中最上边的单元格为 gridy=0。值 RELATIVE 指定将组件放置在添加此组件之前刚刚添加到容器中的组件的下面。 gridwidth:指定组件显示区域的某一行中的单元格数。 [gridwidth 应为非负,默认值为 1。 ] 使用 REMAINDER 指定组件的显示区域,该区域的范围是从 gridx 到该行的最后一个单元格。使用 RELATIVE 指定组件的显示区域,该区域的范围是从 gridx 到它所在行的倒数第二个单元格。 gridheight:指定在组件显示区域的一列中的单元格数。 [gridheight 应为非负,默认值为 1。 ] 使用 REMAINDER 指定组件的显示区域,该区域的范围是从 gridy 到该列的最后一个单元格。使用 RELATIVE 指定组件的显示区域,该区域的范围是从 gridy 到它所在列的倒数第二个单元格。 weightx:指定如何分布额外的水平空间。 [此字段的默认值为 0。weightx 应为非负值。 ] 网格包布局管理器计算出列的权重将是列的所有组件中最大的 weightx。如果得到的布局在水平方向上比需要填充的区域小,那么系统会将额外的空间按照其权重比例分布到每一列。权重为零的列不会得到额外的空间。 如果所有的权重都为零,则所有的额外空间都将出现在单元格的网格之间和左右边缘之间。 weighty:指定如何分布额外的垂直空间。 [此字段的默认值为 0。weighty 应为非负值。] 网格包布局管理器计算出行的权重将是行的所有组件中最大的 weighty。如果得到的布局在垂直方向上比需要填充的区域小,则系统会将额外的空间按照其权重比例分布到每一行。权重为零的行不会得到额外的空间。 如果所有的权重都为零,则所有的额外空间都将出现在单元格的网格之间和上下边缘之间。 anchor:当组件小于其显示区域时使用此字段。它可以确定在显示区域中放置组件的位置。[默认值为 CENTER。] 可能的值有三种:相对于方向的值、相对于基线的值和绝对值。相对于方向的值是相对于容器的组件方向属性进行解释的,相对于基线值是相对于基线进行解释的,绝对值则不然。绝对值有:CENTER、NORTH、NORTHEAST、EAST、SOUTHEAST、SOUTH、SOUTHWEST、WEST 和 NORTHWEST。方向相对值有:PAGE_START、PAGE_END、LINE_START、LINE_END、FIRST_LINE_START、FIRST_LINE_END、LAST_LINE_START 和 LAST_LINE_END。相对于基线的值有:BASELINE、BASELINE_LEADING、BASELINE_TRAILING、ABOVE_BASELINE、ABOVE_BASELINE_LEADING、ABOVE_BASELINE_TRAILING、BELOW_BASELINE、BELOW_BASELINE_LEADING 和 BELOW_BASELINE_TRAILING。 fill:当组件的显示区域大于它所请求的显示区域的大小时使用此字段。它可以确定是否调整组件大小,以及在需要的时候如何进行调整。[默认值为 NONE。] 以下值适用于 fill: NONE:不调整组件大小。 HORIZONTAL:加宽组件,使它在水平方向上填满其显示区域,但是不改变高度。 VERTICAL:加高组件,使它在垂直方向上填满其显示区域,但是不改变宽度。 BOTH:使组件完全填满其显示区域。 insets:此字段指定组件的外部填充,即组件与其显示区域边缘之间间距的最小量。 [默认值为 new Insets(0, 0, 0, 0)。] insets四个参数按顺序分别代表上,左,下,右四个方向空出的间距。 ipadx:此字段指定组件的内部填充,即给组件的最小宽度添加多大的空间。组件的宽度至少为其最小宽度加上 ipadx 像素。 [默认值为 0。 ] ipady:此字段指定内部填充,即给组件的最小高度添加多大的空间。组件的高度至少为其最小高度加上 ipady 像素。 [默认值为 0。 ] 示例代码: package GUITest; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; public class GridBagLayoutTest2 { JPanel panelTop = new JPanel(); private void addButton(String arg0,GridBagLayout gridBag,GridBagConstraints constraints){ JButton btn = new JButton(arg0); gridBag.setConstraints(btn, constraints); panelTop.add(btn); } public GridBagLayoutTest2(){ JFrame frm = new JFrame("GridBagLayout Test v1.0"); GridBagLayout gridBag = new GridBagLayout(); panelTop.setLayout(gridBag); GridBagConstraints constraints = new GridBagConstraints(); constraints.weightx = 1; constraints.fill = GridBagConstraints.BOTH; this.addButton("Button0",gridBag,constraints); this.addButton("Button1",gridBag,constraints); this.addButton("Button2",gridBag,constraints); constraints.gridwidth = GridBagConstraints.REMAINDER; this.addButton("Button3",gridBag,constraints); this.addButton("Button4",gridBag,constraints); constraints.gridwidth = GridBagConstraints.RELATIVE;//倒数第二,后边一定要使用REMAINDER this.addButton("Button5",gridBag,constraints); constraints.gridwidth = GridBagConstraints.REMAINDER;//倒数第一,下一个换行。 this.addButton("Button6",gridBag,constraints); constraints.gridwidth = 1; constraints.gridheight = 2; constraints.weighty = 1.0; this.addButton("Button7",gridBag,constraints); constraints.weighty = 0.0; constraints.gridwidth = GridBagConstraints.REMAINDER; constraints.gridheight = 1; this.addButton("Button8",gridBag,constraints); constraints.gridwidth = GridBagConstraints.RELATIVE; this.addButton("Button9",gridBag,constraints); this.addButton("Button10",gridBag,constraints); frm.add(panelTop); frm.setVisible(true); frm.setSize(500, 300); frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } public static void main(String[] args){ new GridBagLayoutTest2(); } } |
随便看 |
百科全书收录4421916条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。