分享
 
 
 

GridBagConstraint

王朝百科·作者佚名  2010-05-13
窄屏简体版  字體: |||超大  

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)。]

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();

}

}

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有