java学习——53.网格包布局
GridBagLayout网格包布局是比较灵活的布局,它将容器分成若干行和列网格,每个组件可占据其中的若干行或列的多个单元格。
GridBagLayout类声明如下:
public class GridBagLayout extends Object implements LayoutManager2,Serializable
{
public GridBagLayout()
public void setConstraints(Component comp,GridBagConstraints cons)
}
网格包布局时,其组件具体放在哪一行哪一列需要用以下类来约束。
public class GridBagConstraints extends Object implements Cloneable, Serializable
{
public int gridwidth; //指定组件宽度
public int gridheight; //指定组件高度
public intgridx; //指定水平坐标
public int gridy //指定垂直坐标
public int fill; //指定是否调整组件大小及调整原则
public GridBagConstraints(); //构造方法,创建对象
}
具体请见示例。
import java.awt.*;
import java.awt.event.*;
public class learnjava extends Frame{
private static TextField t;
private static Button b1,b2,b3,b4;
public static void main(String args[]){
learnjava jsq=new learnjava();
jsq.setTitle("计算器");
jsq.setSize(200,200);
jsq.setLocation(200, 200);
GridBagLayout gridbag=new GridBagLayout();
jsq.setLayout(gridbag);
jsq.setBackground(new Color(554254));
jsq.setFont(new Font("黑体",2,20));
t=new TextField(5);
GridBagConstraints s=new GridBagConstraints();
s.gridx=1;
s.gridy=1;
s.gridwidth=4;
s.gridheight=1;
s.fill=GridBagConstraints.BOTH;
gridbag.setConstraints(t, s);
jsq.add(t);
b1=new Button(" 1 ");
s.gridx=1;
s.gridy=2;
s.gridwidth=1;
s.gridheight=1;
gridbag.setConstraints(b1, s);
jsq.add(b1);
b2=new Button(" 2 ");
s.gridx=2;
s.gridy=2;
gridbag.setConstraints(b2, s);
jsq.add(b2);
b3=new Button(" = ");
s.gridx=3;
s.gridy=2;
gridbag.setConstraints(b3, s);
jsq.add(b3);
b4=new Button(" + ");
s.gridx=4;
s.gridy=2;
gridbag.setConstraints(b4, s);
jsq.add(b4);
jsq.addWindowListener(new WindowAdapter(){
publicvoid windowClosing(WindowEvent e){
System.exit(0);
}
});
jsq.setVisible(true);
}
}
其运行结果如下:
