Java(40)_GridBagLayout

二次信任 提交于 2020-03-18 01:49:37

 

 

package MYSQK.example01;
import java.awt.*;

/**
 * 网络包布局管理器
 */
class Layout extends Frame{
    public  Layout(String title){
        GridBagLayout layout = new GridBagLayout();
        GridBagConstraints constraints = new GridBagConstraints();//约束对象,这个都要加的!!!
        this.setLayout(layout);//设置布局管理器
        //设置横向和纵向
        constraints.fill = GridBagConstraints.BOTH;//设置组件横向纵向可以拉伸
        constraints.weightx=1;//设置横向权重为1,表示横向拉伸时,它也要随着窗体变大
        constraints.weighty=1;//设置纵向权重为1,表示纵向拉伸时,他也要随着窗体变大
        this.addComponent("button1",layout,constraints);
        this.addComponent("button2",layout,constraints);
        this.addComponent("button3",layout,constraints);
        constraints.gridwidth=GridBagConstraints.REMAINDER;//添加的组件是本行的最后一个组件
        this.addComponent("button4",layout,constraints);//在一整行最后一个

        constraints.weightx=0;//为0,表示随着窗体变大,它本身不不变的!但是因为这个地方它占了一整行,所以横向拉长的时候看不出来
        constraints.weighty=0;//设置权重为0,这个时候纵向拉伸窗体,这个按钮纵向距离是不变的!
        this.addComponent("button5",layout,constraints);//占一整行

        constraints.gridwidth=1;//设置组件跨一个网格
        this.addComponent("button6",layout,constraints);

        constraints.gridwidth=GridBagConstraints.REMAINDER;
        this.addComponent("button7",layout,constraints);

        constraints.gridheight=2;//占组建的两个网格
        constraints.gridwidth=1;
        constraints.weightx=2;//权重越大,随着窗体拉伸时变化的幅度越大
        constraints.weighty=2;
        this.addComponent("button8",layout,constraints);

        constraints.gridwidth = GridBagConstraints.REMAINDER;
        constraints.gridheight=1;
        this.addComponent("button9",layout,constraints);
        this.addComponent("button10",layout,constraints);

        this.setTitle(title);
        this.pack();//设置自动窗体大小
        this.setVisible(true);
    }

    /**
     * 添加组件方法,通过指定的约束,将组件添加到布局管理器中
     * @param name
     * @param layout
     * @param constraints
     */
    public void addComponent(String name,GridBagLayout layout,GridBagConstraints constraints){
          Button button = new Button(name);//创建一个为name的按钮
          layout.setConstraints(button,constraints);//设置约束对象和按钮的关联
          this.add(button);
    }
}
public class example01 {
  public  static  void  main(String[] args){
      new Layout("GridBagLayout");
  }
}

 

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!