package wanggezubujuguanliqi;
import java.awt.Button;
import java.awt.Color;
import java.awt.Container;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class Demo {
JFrame frame=new JFrame();//主窗体
Container container;//主容器
void createFrame() {
container=frame.getContentPane();
container.setLayout(new GridBagLayout());//获取主容器并设置布局方式
frame.setSize(800,600);//设置窗体大小
frame.setLocationRelativeTo(null);//设置居中方式
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//关闭规则
}
void init() {
GridBagConstraints g1BagConstraints=new GridBagConstraints();//创建约束条件
g1BagConstraints.gridx=0;
g1BagConstraints.gridy=0;
container.add(new JButton("组件1"),g1BagConstraints);
GridBagConstraints g2BagConstraints=new GridBagConstraints();//创建约束条件
g2BagConstraints.gridx=1;
g2BagConstraints.gridy=1;
container.add(new JButton("组件2"),g2BagConstraints);
GridBagConstraints g3BagConstraints=new GridBagConstraints();//创建约束条件
g3BagConstraints.gridx=3;
g3BagConstraints.gridy=3;
container.add(new JButton("组件3"),g3BagConstraints);
}
void createButton() {
for (int i = 0; i < 9; i++) {
GridBagConstraints g1BagConstraints=new GridBagConstraints();//创建约束条件
g1BagConstraints.gridx=i;
g1BagConstraints.gridy=0;
container.add(new JButton("组件"),g1BagConstraints);
GridBagConstraints g2BagConstraints=new GridBagConstraints();//创建约束条件
g2BagConstraints.gridx=0;
g2BagConstraints.gridy=i;
container.add(new JButton("组件"),g2BagConstraints);
}
}
void init2() {
GridBagConstraints g1BagConstraints=new GridBagConstraints();//创建约束条件
g1BagConstraints.gridx=1;
g1BagConstraints.gridy=1;
container.add(new JButton("组件1"),g1BagConstraints);
GridBagConstraints g2BagConstraints=new GridBagConstraints();//创建约束条件
g2BagConstraints.gridx=2;
g2BagConstraints.gridy=2;
g2BagConstraints.gridwidth=2;
g2BagConstraints.gridheight=1;
container.add(new JButton("组件2"),g2BagConstraints);
GridBagConstraints g3BagConstraints=new GridBagConstraints();//创建约束条件
g3BagConstraints.gridx=4;
g3BagConstraints.gridy=4;
g3BagConstraints.gridwidth=2;
g3BagConstraints.gridheight=2;
container.add(new JButton("组件3"),g3BagConstraints);
}
void init3(){
GridBagConstraints g1BagConstraints=new GridBagConstraints();//创建约束条件
g1BagConstraints.gridx=1;
g1BagConstraints.gridy=1;
g1BagConstraints.gridwidth=2;
g1BagConstraints.gridheight=2;
container.add(new JButton("NONE"),g1BagConstraints);
GridBagConstraints g2BagConstraints=new GridBagConstraints();//创建约束条件
g2BagConstraints.gridx=3;
g2BagConstraints.gridy=1;
g2BagConstraints.gridwidth=2;
g2BagConstraints.gridheight=1;
g2BagConstraints.fill=GridBagConstraints.HORIZONTAL;//水平填充
container.add(new JButton("HORIZONTAL"),g2BagConstraints);
GridBagConstraints g3BagConstraints=new GridBagConstraints();//创建约束条件
g3BagConstraints.gridx=5;
g3BagConstraints.gridy=1;
g3BagConstraints.gridwidth=2;
g3BagConstraints.gridheight=2;
g3BagConstraints.fill=GridBagConstraints.VERTICAL;//垂直填充
container.add(new JButton("VERTICAL"),g3BagConstraints);
GridBagConstraints g4BagConstraints=new GridBagConstraints();//创建约束条件
g4BagConstraints.gridx=7;
g4BagConstraints.gridy=1;
g4BagConstraints.gridwidth=2;
g4BagConstraints.gridheight=2;
g4BagConstraints.fill=GridBagConstraints.BOTH;//全填充
container.add(new JButton("BOTH"),g4BagConstraints);
}
void init4() {//anchor属性可以定义组件在单元格中的方位
GridBagConstraints g1BagConstraints=new GridBagConstraints();//创建约束条件
g1BagConstraints.gridx=1;
g1BagConstraints.gridy=1;
g1BagConstraints.gridwidth=2;
g1BagConstraints.gridheight=2;
g1BagConstraints.anchor=GridBagConstraints.NORTH;
container.add(new JButton("@"),g1BagConstraints);
g1BagConstraints.fill=GridBagConstraints.BOTH;//全填充
g1BagConstraints.anchor=g1BagConstraints.CENTER;//居中显示
JPanel panel=new JPanel();//创建面板
panel.setBackground(Color.green);//面板背景绿色
container.add(panel,g1BagConstraints);
}
void init5() {
GridBagConstraints g1BagConstraints=new GridBagConstraints();//创建约束条件
g1BagConstraints.gridx=1;
g1BagConstraints.gridy=1;
g1BagConstraints.gridwidth=2;
g1BagConstraints.gridheight=2;
g1BagConstraints.insets=new Insets(5, 5, 5, 5);
container.add(new JButton("@"),g1BagConstraints);
}
void init6() {//ipadx和ipady是组建的首选大小,当他们的值是正数时放大,为负数时缩小
GridBagConstraints g1BagConstraints=new GridBagConstraints();//创建约束条件
g1BagConstraints.gridx=4;
g1BagConstraints.gridy=2;
g1BagConstraints.ipadx=10;
g1BagConstraints.ipady=10;
container.add(new JButton("组件1"),g1BagConstraints);
GridBagConstraints g2BagConstraints=new GridBagConstraints();//创建约束条件
g2BagConstraints.gridx=2;
g2BagConstraints.gridy=2;
g2BagConstraints.ipadx=-10;
g2BagConstraints.ipady=-10;
container.add(new JButton("组件2"),g2BagConstraints);
}
void init7() {//表示单元格的最大宽和高
GridBagConstraints g1BagConstraints=new GridBagConstraints();//创建约束条件
g1BagConstraints.gridx=2;
g1BagConstraints.gridy=2;
g1BagConstraints.weightx=10;
g1BagConstraints.weighty=10;
container.add(new JButton("组件1"),g1BagConstraints);
}
public static void main(String[] args) {//可以定义组件到四个边的距离
Demo demo=new Demo();//创建Demo对象
demo.createFrame();//创建窗体
demo.createButton();
demo.init7();
demo.frame.setVisible(true);//窗体是否显示出来
}
}