网格组布局
代码如下(示例):
import java.awt.*;
import javax.swing.*;
public class Demo1 {
JFrame f = new JFrame(); //主窗体
Container c;//主容器
void createFrame() {
c = f.getContentPane(); //取出主容器
c.setLayout(new GridBagLayout()); //网格布局
f.setSize(800,600); //大小
f.setLocationRelativeTo(null); //居中
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//关闭规则
}
void init() {
//约束条件
GridBagConstraints g1 = new GridBagConstraints();
g1.gridx = 0;
g1.gridy = 0;
c.add(new JButton("组件1"),g1);
GridBagConstraints g2 = new GridBagConstraints();
g2.gridx = 1;
g2.gridy = 1;
c.add(new JButton("组件2"),g2);
GridBagConstraints g3= new GridBagConstraints();
g3.gridx = 3;
g3.gridy = 3; //因为没有组件所以显示会隐藏
c.add(new JButton("组件3"),g3);
}
void createButton() {
for(int i = 0; i<9;i++) {
//设置长
GridBagConstraints g1 = new GridBagConstraints();
g1.gridx = i;
g1.gridy = 0;
c.add(new Button("组件"),g1);
//设置宽
GridBagConstraints g2 = new GridBagConstraints();
g2.gridx = 0;
g2.gridy = i;
c.add(new Button("组件"),g2);
}
}
void init2() {
GridBagConstraints g1 = new GridBagConstraints();
g1.gridx = 1;
g1.gridy = 1;
c.add(new JButton("组件1"),g1);
GridBagConstraints g2 = new GridBagConstraints();
g2.gridx = 2;
g2.gridy = 2;
g2.gridwidth = 2; //占两列
g2.gridheight = 1; //占一行
c.add(new JButton("组件2"),g2);
GridBagConstraints g3= new GridBagConstraints();
g3.gridx = 4;
g3.gridy = 3;
g3.gridheight = 2;
g3.gridwidth = 2;
c.add(new JButton("组件3"),g3);
}
void init3() {
//居中无填充
GridBagConstraints g1 = new GridBagConstraints();
g1.gridx =1;
g1.gridy = 1;
g1.gridwidth = 2;
g1.gridheight = 2;
c.add(new JButton("none"),g1); //居中填充
GridBagConstraints g2 = new GridBagConstraints();
g2.gridx = 3;
g2.gridy = 1;
g2.gridwidth = 2;
g2.gridheight = 2;
g2.fill = GridBagConstraints.HORIZONTAL; //类常量
c.add(new JButton("HORIZONTAL"),g2); //水平填充
GridBagConstraints g3= new GridBagConstraints();
g3.gridx = 4;
g3.gridy = 3;
g3.gridheight = 2;
g3.gridwidth = 2;
g3.fill = GridBagConstraints.VERTICAL; //垂直填充
c.add(new JButton("VERTICAL"),g3);
GridBagConstraints g4= new GridBagConstraints();
g4.gridx = 5;
g4.gridy = 1;
g4.gridheight = 2;
g4.gridwidth = 2;
g4.fill = GridBagConstraints.BOTH; //全部填充
c.add(new JButton("BOTH"),g4);//标签的名字
}
void init4() {
GridBagConstraints g1 = new GridBagConstraints();
g1.gridx =1;
g1.gridy = 1;
g1.gridwidth = 2;
g1.gridheight = 2;
g1.anchor = GridBagConstraints.NORTH; //改成北
c.add(new JButton("@"),g1);
g1.fill = GridBagConstraints.BOTH; //全填充
g1.anchor = GridBagConstraints.CENTER;//居中显示
JPanel p = new JPanel(); //设置面板
p.setBackground(Color.green);
c.add(p,g1);
}
void init5() {
GridBagConstraints g1 = new GridBagConstraints();
g1.gridx =1;
g1.gridy = 1;
g1.insets=new Insets(5,5,5,10);
c.add(new JButton("@"),g1);
}
void init6() {
GridBagConstraints g1 = new GridBagConstraints();
g1.gridx = 2;
g1.gridy = 2;
g1.gridwidth = 10;
g1.gridheight = 10;
c.add(new JButton("组件"),g1);
GridBagConstraints g2 = new GridBagConstraints();
g2.gridx = 4;
g2.gridy = 2;
g2.gridwidth = -10;
g2.gridheight = -10;
c.add(new JButton("组件"),g2);
}
void init7() {
GridBagConstraints g1 = new GridBagConstraints();
g1.gridx = 2;
g1.gridy = 2;
g1.weightx = 10;
g1.weighty = 10;
c.add(new JButton("组件"),g1);
}
public static void main(String[] args){
Demo1 d = new Demo1();
d.createFrame();
d.createButton();
// d.init();
// d.init2();
// d.init3();
// d.init4();
// d.init5();
// d.init6();
d.init7();//随着缩小缩小
d.f.setVisible(true);
}
}
总结
gridx,gridy 组件所在位置
gridwith ,gridweight 组件占用的行数和列数
anchor 组件所在的方位
fill 组件的填充方式
insets 组件与单元格边缘的最小距离
ipadx , ipady 组件的首先大小
weightx,weighty 一个单元格的最大宽高