2019独角兽企业大额募集Python工程师标准
GridBagLayout是一个灵活的布局管理器,必须使用GridBagConstraints才能添加部件。 其中有几个参数,说明如下。
gridx/gridy :组件左上角的起始横坐标。 相对于在GridBagLayout中设置的空间坐标
网格宽度:组件所占的列数,也是组件的宽度
网格高度:组件所占的行数,也是组件的高度
(填充)如果组件位于体量中,且体量无法填满,请使用填充值设定填充方法。 四个值) NONE、HORIZONTAL、VERTICAL和BOTH )
ipadx: 组件之间的横向间距
ipady :程序集之间的纵向间距
(insets )指定组件无法填充其体量时,在insets周围(即上下左右)留下的间隙
anchor :同样,如果组件无法填充其体量,则在anchor中设置组件的位置。 anchor有两种类型的值,绝对值和相对值各有几个。 文档里有,你可以自己看
weightx :行权重。 此属性决定了如何分配行的其馀空间
权重:列的权重。 此属性决定了如何分配列的剩馀空间
1 .为了清楚起见,每个GridBagLayout对象都维护动态矩形单元格网格,每个组件占用一个或多个称为显示区域的单元格。
网格的整体方向取决于容器的ComponentOrientation属性。 对于水平从左到右的方向,网格坐标[ 0,0 ]位于容器的左上角。 其中x向右增加,y向下增加。
要使用GidBagLayout,请首先定义GridBagConstraints对象。
java API的说明如下。 “由GridBagLayout管理的每个组件都与GridBagConstraints实例相关联。 Constraints对象指定组件在网格中的显示区域以及组件在该显示区域中的放置方式。 ”
例如,可以在以下代码行中添加其他组件:
gridbaglayoutgridbag=newgridbaglayout (;
gridbagconstraintsc=newgridbagconstraints (;
JFrame f=new JFrame (;
f.setlayout(gridbag;
buttonbutton=newbutton(name );
gridbag.setconstraints(Button,c );
f .添加(JButton;
3 .为了有效地使用网格包布局,必须自定义与组件相关联的一个或多个GridBagConstraints对象。
也就是说,必须设置GridBagConstraints对象的属性。 如果能掌握以下4个参数,我认为可以很好地使用GidBagLayout :
(1) gridbag constraints.gridwidthgridbagconstraints.grid height
指定组件的可见区域行(对于gridwidth )或列(对于gridheight )中的单元格数。 默认值为1。 在窗口中添加一个包含两个单元格(两行一列)的按钮,如下所示:
JFrame f=new JFrame (;
gridbaglayoutgridbag=newgridbaglayout (;
gridbagconstraintsc=newgridbagconstraints (;
f.setlayout(gridbag;
c .网格高度=2;
c .网格宽度=1;
JButton jButton=new JButton ('按钮1 );
gridbag.setconstraints(Button,c );
f .添加(JButton;
(2) GridBagConstraints.fill
用于在组件的显示区域大于组件所需的空间时,确定是否调整组件。
可能的值为GridBagConstraints.NONE (默认值)、
将组件展开到足以在GridBagConstraints.HORIZONTAL ()水平方向填充显示区域的大小,不更改高度)、
增加GridBagConstraints.VERTICAL ()组件以在垂直方向充分填充显示区域而不更改宽度)和
格里德堡孔斯
traints.BOTH(使组件完全填满其显示区域)。使用情景举例:在一个很大的窗口(如300*300)中添加一个按钮(原始大小40*30)。
(3)GridBagConstraints.anchor
当组件小于其显示区域时,用于确定将组件置于何处(在显示区域中)。可能的值有两种:相对和绝对。相对值的解释是相对于容器的ComponentOrientation 属性,而绝对值则不然。个人觉得只使用绝对值就可以。有效值有:
绝对值
GridBagConstraints.NORTH
GridBagConstraints.SOUTH
GridBagConstraints.WEST
GridBagConstraints.EAST
GridBagConstraints.NORTHWEST
GridBagConstraints.NORTHEAST
GridBagConstraints.SOUTHWEST
GridBagConstraints.SOUTHEAST
GridBagConstraints.CENTER (the default)
(4)GridBagConstraints.weightx、GridBagConstraints.weighty (************最重要的属性)
用 于确定分布空间的方式,这对于指定调整行为至关重要。例如:在一个很大的窗口(如300*300)中添加两个按钮(也可以是面板)(原始大小 40*30),默认的,你会发现两个按钮分别处于上下两个等大小的区域中,且只占用了一小部分,没有被按钮占用的区域就被称为额外区域。该额外区域会随着参数weightx、weighty而被分配。
完整的示例代码如下:
import javax.swing.*;
import java.util.*;
import java.awt.*;
public class Example{
public Example() {
}
public static void main(String args[]) {
JFrame f = new JFrame("GridBag Layout Example");
GridBagLayout gridbag = new GridBagLayout();
GridBagConstraints c = new GridBagConstraints();
f.setLayout(gridbag);
//添加按钮1
c.fill = GridBagConstraints.BOTH;
c.gridheight=2;
c.gridwidth=1;
c.weightx=0.0;//默认值为0.0
c.weighty=0.0;//默认值为0.0
c.anchor=GridBagConstraints.SOUTHWEST;
JButton jButton1 = new JButton("按钮1");
gridbag.setConstraints(jButton1, c);
f.add(jButton1);
//添加按钮2
c.fill = GridBagConstraints.NONE;
c.gridwidth=GridBagConstraints.REMAINDER;
c.gridheight=1;
c.weightx=1.0;//默认值为0.0
c.weighty=0.8;
JButton jButton2 = new JButton("按钮2");
gridbag.setConstraints(jButton2, c);
f.add(jButton2);
//添加按钮3
c.fill = GridBagConstraints.BOTH;
c.gridwidth=1;
c.gridheight=1;
c.weighty=0.2;
JButton jButton3 = new JButton("按钮3");
gridbag.setConstraints(jButton3, c);
f.add(jButton3);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setSize(500,500);
f.setVisible(true);
}
}
gridx,gridy —— 设置组件的位置,
gridx设置为GridBagConstraints.RELATIVE代表此组件位于之前所加入组件的右边。
gridy设置为GridBagConstraints.RELATIVE代表此组件位于以前所加入组件的下面。
建议定义出gridx,gridy的位置以便以后维护程序。gridx=0,gridy=0时放在0行0列。
gridwidth,gridheight —— 用来设置组件所占的单位长度与高度,默认值皆为1。
你可以使用GridBagConstraints.REMAINDER常量,代表此组件为此行或此列的最后一个组件,而且会占据所有剩余的空间。
weightx,weighty —— 用来设置窗口变大时,各组件跟着变大的比例。
当数字越大,表示组件能得到更多的空间,默认值皆为0。
anchor —— 当组件空间大于组件本身时,要将组件置于何处。
有CENTER(默认值)、NORTH、NORTHEAST、EAST、SOUTHEAST、WEST、NORTHWEST选择。
insets —— 设置组件之间彼此的间距。
它有四个参数,分别是上,左,下,右,默认为(0,0,0,0)。
ipadx,ipady —— 设置组件间距,默认值为0。
GridBagLayout里的各种设置都必须通过GridBagConstraints,因此当我们将GridBagConstraints的参数都设置
好了之后,必须new一个GridBagConstraints的对象出来,以便GridBagLayout使用。
构造函数:
GirdBagLayout()建立一个新的GridBagLayout管理器。
GridBagConstraints()建立一个新的GridBagConstraints对象。
GridBagConstraints(int gridx,int gridy,
int gridwidth,int gridheight,
double weightx,double weighty,
int anchor,int fill, Insets insets,
int ipadx,int ipady)建立一个新的GridBagConstraints对象,并指定其参数的值。
转载于:https://my.oschina.net/weiweiqiao/blog/379634