资源预览内容
第1页 / 共19页
第2页 / 共19页
第3页 / 共19页
第4页 / 共19页
第5页 / 共19页
第6页 / 共19页
第7页 / 共19页
第8页 / 共19页
第9页 / 共19页
第10页 / 共19页
亲,该文档总共19页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
布局管理器 GridBagLayout 的使用由TMDCode.com搜集整理,欢迎访问我的小博客!Java布局管理器有FlowLayout, BorderLayout, GridLayout, CardLayout, GridBagLayout等,相比较而言,GridBagLayout的使用方式要复杂一些。但它的表现力也最丰富。之前我对GridBagLayout的使用也是一知半解,具体的用法不是十分的明了。这两天认真的看了这一块,就写了下来。使用 GridBagLayout的主要工作就是设置组件的约束,通过GridBagConstraints的实例设置。GridBagConstraints 主要有11个参数:gridx, gridy, gridwidth ,gridheight ,anchor ,fill ,weightx ,weighty ,insets ,ipadx ,ipady;每个参数的意义可以参考java api上的说明。本文的最后附有anchor属性和fill属性的示例。实际使用中根据自己的需要设置特定的属性。在Java api中给出了一个GridBagLayout的例子和实现,下面的是自己的实现方式。CODEimport java.awt.*;import java.awt.event.*;import java.applet.*;public class GridBagLayoutDemo extends Applet GridBagLayout gbaglayout;GridBagConstraints constraints;public void init() gbaglayout = new GridBagLayout(); constraints = new GridBagConstraints(); setLayout(gbaglayout); /Button 1 Button btn1 = new Button(Button01); constraints.gridx = 0; constraints.gridy = 0; constraints.gridwidth = 1; constraints.gridheight = 1; constraints.anchor = GridBagConstraints.CENTER; constraints.fill = GridBagConstraints.NONE; constraints.weightx = 0.0; constraints.weighty = 0.0; constraints.insets = new Insets(0, 0, 0, 0); constraints.ipadx = 0; constraints.ipady = 0; makeButton(gbaglayout, constraints, btn1); /Button 2 Button btn2 = new Button(Button02); constraints.gridx = 1; makeButton(gbaglayout, constraints, btn2); /Button 3 Button btn3 = new Button(Button03); constraints.gridx = 2; makeButton(gbaglayout, constraints, btn3); /Button 4 Button btn4 = new Button(Button04); constraints.gridx = 3; makeButton(gbaglayout, constraints, btn4);/Button 5 Button btn5 = new Button(Button05); constraints.gridx = 0; constraints.gridy = 1; constraints.gridwidth = 4; makeButton(gbaglayout, constraints, btn5); /Button 6 Button btn6 = new Button(Button06); constraints.gridx = 0; constraints.gridy = 2; constraints.gridwidth = 3; makeButton(gbaglayout, constraints, btn6); /Button 7 Button btn7 = new Button(Button07); constraints.gridx = 3; constraints.gridy = 2; constraints.gridwidth = 1; makeButton(gbaglayout, constraints, btn7); /Button 8 Button btn8 = new Button(Button08); constraints.gridx = 0; constraints.gridy = 3; constraints.gridwidth = 1; constraints.gridheight = 2; makeButton(gbaglayout, constraints, btn8); /Button 9 Button btn9 = new Button(Button09); constraints.gridx = 1; constraints.gridy = 3; constraints.gridwidth = 3; constraints.gridheight = 1; makeButton(gbaglayout, constraints, btn9); /Button 10 Button btn10 = new Button(Button10); constraints.gridx = 1; constraints.gridy = 4; constraints.gridwidth = 3; constraints.gridheight = 1; makeButton(gbaglayout, constraints, btn10);private void makeButton(GridBagLayout gbaglayout, GridBagConstraints constraints, Component component) gbaglayout.setConstraints(component, constraints); add(component);public static void main(String args) Frame frame = new Frame(GridBagLayoutDemo); frame.addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent e) System.exit(0); ); GridBagLayoutDemo demo = new GridBagLayoutDemo(); demo.init(); frame.add(BorderLayout.CENTER, demo); frame.setSize(270, 150); /frame.setSize(361, 254); frame.setVisible(true);CODE显示窗口可以如图所示划分为 5 行和 4 列,每个按钮所在的单元可以很容易的确定,所以 gridx 和 gridy 的值都很容易确定,组件放置在的位置也就确定了。然而,组件都有一个默认的大小,它和它所在的单元格大小一般情况下都是不同的,并且如果窗口发生变化时,组件做出什么样的改变就要用到fill ,weightx 和 weighty了。结合具体的例子来看:设置 Button 1/Button 1Button btn1 = new Button(Button01);/所在单元格为(0, 0)constraints.gridx = 0;constraints.gridy = 0;/占用一个长度长和一个长度宽constraints.gridwidth = 1;constraints.gridheight = 1;/这里使用默认的 anchorconstraints.anchor = GridBagConstraints.CENTER;/设置NONE填充constraints.fill = GridBagConstraints.NONE;/设置填充权重constraints.weightx = 0.0;constraints.weighty = 0.0;/Insets, ipadx, ipady使用默认值constraints.insets = new Insets(0, 0, 0, 0);constraints.ipadx = 0;constraints.ipady = 0;/添加 Button01 按钮makeButton(gbaglayout, constraints, btn1);设置 Button02, Button03, Button04/Button 2Button btn2 = new Button(Button02);constraints.gridx = 1;makeButton(gbaglayout, constraints, btn2);/Button 3Button btn3 = new Button(Button03);constraints.gridx = 2;makeButton(gbaglayout, constraints, btn3);/Button 4Button btn4 = new Button(Button04);constraints.gridx = 3;makeButton(gbaglayout, constraints, btn4);Button02, Button03, Button04和Button01的区别是,只需要设置他们的gridx值;其他的不变。设置 Button05/Button 5Button btn5 = new Button(Button05);/所在单元格为(0, 1)constraints.gridx = 0;constraints.gri
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号