GridBagLayout

来源:互联网 发布:米兰工业设计学院知乎 编辑:程序博客网 时间:2024/04/20 19:15
package GUI;import java.awt.Button;import java.awt.Frame;import java.awt.GridBagConstraints;import java.awt.GridBagLayout;public class MyGridBagConstainer {public static void main(String[] args) { Frame ff = new Frame();  GridBagLayout gr = new GridBagLayout();  GridBagConstraints gc = new GridBagConstraints();  //创建一个名为gc的约束对象     ff.setLayout(gr);    //将容器ff的布局设为GridBagLayout //创建一组按钮组件 Button bb1 = new Button("bb1");  Button bb2 = new Button("bb2"); Button bb3 = new Button("bb3");  Button bb4 = new Button("bb4"); Button bb5 = new Button("bb5"); Button bb6 = new Button("bb6"); Button bb7 = new Button("bb7");  Button bb8 = new Button("bb8");  gc.fill =  GridBagConstraints.BOTH;//设置约束的fill参数,该参数表示当组件的大小小于网格单元的大小时在水平和垂直 方向都填充, gc.weightx =11; //设置x方向的加权值为11。gc.weighty = 11;//设置y方向的加权值为11。   gr.setConstraints(bb1, gc); //将以上gc所设置的约束应用到按钮组件bb1 gc.weightx = 22;//设置x方向的加权值为22,如果不设置weightx则以下的组件都将自动应用上面所设置的weightx值11。  gr.setConstraints(bb2, gc);   //将以上所设置的约束应用到按钮组件bb2。//gc.weighty=111; //注意如果不注释掉该行,则以后使用gc约束的按钮组件在y方向的加权值将为111,而在前面设置的y方向 的加权值11将失去作用。  gc.weightx =33; gc.gridwidth = GridBagConstraints.REMAINDER;//设置gridwidth参数的值为REMAINDER这样在后面使用该约束的组件将是该 行的最后一个组件。gr.setConstraints(bb3, gc); //第一行添加了三个按钮组件bb1,bb2,bb3,且这3个按钮的宽度按weightx设置的值11,22,33按 比例设置宽度      GridBagConstraints gc1 = new GridBagConstraints();//创建第二个约束gc1    gc1.fill = GridBagConstraints.BOTH; gc1.weighty = 22;  //将第2行的y方向加权值设为22 gr.setConstraints(bb4, gc1);      gr.setConstraints(bb5, gc1);  gc1.gridwidth = GridBagConstraints.REMAINDER; gr.setConstraints(bb6, gc1); //第二行添加了三个按钮组件bb4,bb5,bb6  gc1.weighty =33;     gc1.gridwidth = GridBagConstraints.REMAINDER; gr.setConstraints(bb7, gc1);//第三行添加了一个按钮组件bb7 gc1.weighty=0;gr.setConstraints(bb8, gc1); //第四行添加了一个按钮组件bb8,bb8并没有添加到bb7的后面,因为bb8使用了bb7前面的 gridwidth参数设置的值,所以bb8也是单独的一行。    ff.setSize(500, 300);  ff.add(bb1); ff.add(bb2);ff.add(bb3); ff.add(bb4);ff.add(bb5); ff.add(bb6); ff.add(bb7);ff.add(bb8);  ff.setVisible(true);} }

package GUI;import java.awt.Button;import java.awt.Frame;import java.awt.GridBagConstraints;import java.awt.GridBagLayout;import java.awt.Insets;public class MyGridBagCon {public static void main(String[] args)  {//将容器ff的布局设为GridBagLayout   Frame ff = new Frame();  GridBagLayout gr = new GridBagLayout(); GridBagConstraints gc = new GridBagConstraints(); //创建一个名为gc的约束对象   ff.setLayout(gr); //创建一组按钮组件  Button bb1 = new Button("bb1");   Button bb2 = new Button("bb2");   Button bb3 = new Button("bb3");   Button bb4 = new Button("bb4");  Button bb5 = new Button("bb5");   Button bb6 = new Button("bb6");  Button bb7 = new Button("bb7");  Button bb8 = new Button("bb8");     gc.fill = GridBagConstraints.BOTH;  gc.weightx = 11;  gc.weighty = 11;  gr.setConstraints(bb1, gc);  gc.weightx = 22; gc.gridx = 1; gc.gridy = 1;  //将下一个组件放置在坐标为1,1的位置。  gr.setConstraints(bb2, gc);   gc.weightx = 33;  gc.gridx = 2;  gc.gridy = 1; //将下一个组件放置在坐标为2,1的位置。  gc.insets = new Insets(-10, -10, -10, -10); //将下一个组件与网格单元的空白区域向外扩展10个像素,在这里可以看到网格包布局允许组件之间重叠。  gc.gridwidth = GridBagConstraints.REMAINDER; gr.setConstraints(bb3, gc); GridBagConstraints gc1 = new GridBagConstraints();   gc1.weighty = 22;  gc1.ipadx = 50; gc1.ipady = 50; //将组件的最小尺寸加大ipadx*2个像素。 gr.setConstraints(bb4, gc1);  gc1.ipadx = 0;   gc1.ipady = 0;  //将以后的组件的最小尺寸设置为默认值,如果省掉该行,则以后组件的最小尺寸都会加大ipadx*2个像素。  gc1.anchor = GridBagConstraints.NORTHWEST; //将下一个组件bb5的位置放置在单元网格的西北方向。gr.setConstraints(bb5, gc1); //因为bb5未设置fill,同时bb5设置了weightx(由gc参数设置)和weighty两个值以确定bb5所在 的网格单元的大小,因而组件bb5的原始最小尺寸无法占据整个网格单元。   gc1.fill = GridBagConstraints.BOTH;  gc1.gridwidth = GridBagConstraints.REMAINDER; gr.setConstraints(bb6, gc1);    gc1.weighty = 33;  gc1.insets = new Insets(5, 15,40,150); //使下一个组件bb7与网格单元之间在上,左,下,右,分别保持5,15,40,150个像素的空白位置。  gr.setConstraints(bb7, gc1);    gc1.weighty = 0; gc1.insets = new Insets(0, 0, 0, 0); //将insets的参数值设为默认值。  gr.setConstraints(bb8, gc1);  ff.setSize(500, 300);  ff.add(bb1);ff.add(bb2);  ff.add(bb3);  ff.add(bb4); ff.add(bb5); ff.add(bb6); ff.add(bb7);  ff.add(bb8);  ff.setVisible(true);}} 




0 0