constraints java_Java图形化界面设计——GridBagConstraints

图14.8程序14.5的执行结果

这个窗口里面的几个按钮有的大、有的小,其大小、位

置均不同,没有一定的规律可循,这即是发挥了GridBagLayout外观管理器

的灵活性。生成此窗口的程序为:

程序14.5

importjava.awt.*;

//输入所有的java.awt 类

publicclasswindow7extendsjava.applet.Applet

{

publicvoidinit() {

resize(300,100);//设置窗口的大小

GridBagConstraintsgbc=new GridBagConstraints(

);//使用类GridBagConstriants

setLayout(newGridBagLayout());//设定外观

管理器为 GridBagLayout外观管理器

gbc.fill =GridBagConstraints.BOTH;//★

所有的按钮都会把分配的剩余空间填满

gbc.gridwidth=1;//★设置第一个按钮的大

gbc.gridheight=1;// ★

ButtonButton1=newButton("东 ");

((GridBagLayout)getLayout( )).setConstraints(Button1,gbc);

add(Button1);

gbc.gridwidth= GridBagConstraints.REMAINDER;

//★第二个按钮填满整行空间

ButtonButton2=newButton("西 ");

((GridBagLayout)getLayout( )).setConstraints(Button2,gbc);

add(Button2);

gbc.gridheight=4;//设置第三个按钮的大

gbc.gridwidth= 1;

ButtonButton3=newButton("南 ");

((GridBagLayout)getLayout( )).setConstraints(Button3,gbc);

add(Button3);

gbc.gridheight=2;//设置第四个按钮的大

gbc.gridwidth= 2;//GridBagConstraints.REMAINDER;

ButtonButton4=newButton("北");

((GridBagLayout)getLayout( )).setConstraints(Button4,gbc);

add(Button4);

gbc.gridwidth= GridBagConstraints.REMAINDER;

Button Button5=newButton("中");

((GridBagLayout)getLayout( )).setConstraints(Button5,gbc);

add(Button5);

gbc.insets=new Insets(5,6,7,8);//★设置第五个按钮的位置

ButtonButton6=newButton("好酒在张弓");

((GridBagLayout)getLayout( )).setConstraints(Button6,gbc);

add(Button6);

}

}

★注释:程序14.5里面有星号的语句都将做详细的解释

下面就详细地解释一下程序14.5,通过对这个小程序的分析可以从中了解GridBagLayout外观管理器的工作原理和工作方法。

GridBagLayout外观管理器实际上是根据类GridBagConstraints所给

出的条件限制以及组件本身的一向特性条件(例如每个组件程序允许的最小

尺寸),来决定各个组件的外观的。

让我们把程序14.5之中出现的新鲜的语句一条一条地看个明白吧:

1.gbc.fill=GridBagConstraints.BOTH;

每个组件有一定的原始大小,例如在类FlowLayout外

观管理器的管理之下显示的就都是组件的本身原始大小。如果我们分配给一

个组件的空间比它原本所需要的空间大时,就需要一定的方式方法来决定如

何处理这一部分多余的空间。这时就用到了fill值。Java根据人们给这个

fill设定的值来决定如何处理比组件原始空间大的那部分空间。

fill可以取四种不同的值,它们分别代表了四种不同

的剩余空间处理方式:

GridBagConstraints.NONE

不必理睬剩余空间的存在,让它空着好了。

GridBagConstraints.BOTH

不让一点剩余空间存在,改变组件的大小,让它填

满分配给它的整个空间。

GridBagConstraints.HORIZONTAL

调整组件的大小,把水平方向的空间填满。

GridBagConstraints.VERTICAL

调整组件的大小,把垂直方向的空间填满,让水平

方向的空间空着吧。

2.gbc.gridwidth=1;和 gbc.gridheight=1;

这两句话像是一对孪生兄弟,应该同时给以同样的重视

。它们一个负责组件的水平宽度(gridwidth),一个负责组件的垂直高度

(gridheight )。由此我们可以知道,组件的大小是可以变化的。

组件的形状是不能改变的,永远是矩形的。

好了,这两条语句的意义很简单,就讲到这里吧。

喂!等一等,我看到下面有一条语句是:

gbc.gridwidth= GridBagConstraints.REMAINDER;

这是什么意思?

怎么gridwidth的值不是一个数,而是“ GridBagConstraints.REMAINDER

”?

原来,这是Java精心为大家设计的一个特别有用的变

量,使用它就可以通知外观管理器让组件占据本行的所有剩余空间,而不必

去计算宽度值是多少,很自动化。

3.gbc.insets=newInsets(5,6,7,8);

这条语句里面提到了两个拼写几乎完全相同的词:insets

和 Insets,虽然只相差一个字母:一个是大写I,一个是小写i,但是它

们代表的意义可大不相同。

Insets是AWT里面一个类的名字,代表着类Insets,它的用途是用来定义组件容器周围的空间大小,其中带有四个参数:

Insets(第一个参数,第二个参数,第三个参数,第

四个参数 )

第一个参数代表距上面有几个点的空白,第二个参数代

表距左边有几个点的空白,第三个参数代表距下边有几个点的空白区域,第

四个参数代表距右边留几个点的空白区域。

形象一点的表示如图 14.9:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值