【gridbaglayout】网格袋布局,一种可以由x,y轴来定位的布局方式。不需要组件的大小相同,便可以将组件垂直、水平或沿他们的基线对齐。每个gridbaglayout对象维持一个动态的矩形单元网格。
【GridBagConstraints】Constraints约束,得到一个约束类的对象
【gridx 】指定包含组件显示区域的前沿的单元格,其中一行中的第一个单元格具有 gridx=0 。
【gridy 】指定组件显示区域顶部的单元格,其中最上面的单元格具有 gridy=0 。
练习一、网格袋布局的应用
package org.zhaiyujia.test1;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class GuiTest5 extends JFrame {
JButton b1,b2,b3,b4,b5;
JPanel p;
public GuiTest5() {
b1=new JButton("button1");
b2=new JButton("button2");
b3=new JButton("button3");
b4=new JButton("button4");
b5=new JButton("button5");
p=new JPanel();
this.getContentPane().add(p);
GridBagLayout gblayout=new GridBagLayout();
p.setLayout(gblayout);
GridBagConstraints gbc=new GridBagConstraints();//产生一个约束类的对象
gbc.gridx=0;
gbc.gridy=0;
p.add(b1,gbc);//相当于button1这个组件应用了这个约束对象gbc,x、y坐标都是0
//gridbaglayout是一个动态的布局类,当它没有其他组件时,他还是居中显示
gbc.gridx=0;
gbc.gridy=1;
p.add(b2,gbc);
//p.add(b3);
//p.add(b4);
//p.add(b5);
this.setSize(300, 300);
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new GuiTest5();
}
}
package org.zhaiyujia.test1;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class GuiTest5 extends JFrame {
JButton b1,b2,b3,b4,b5;
JPanel p;
public GuiTest5() {
b1=new JButton("button1");
b2=new JButton("button2");
b3=new JButton("button3");
b4=new JButton("button4");
b5=new JButton("button5");
p=new JPanel();
this.getContentPane().add(p);
GridBagLayout gblayout=new GridBagLayout();
p.setLayout(gblayout);
GridBagConstraints gbc=new GridBagConstraints();//产生一个约束类的对象
gbc.gridx=0;
gbc.gridy=0;
p.add(b1,gbc);//相当于button1这个组件应用了这个约束对象gbc,x、y坐标都是0
//gridbaglayout是一个动态的布局类,当它没有其他组件时,他还是居中显示
gbc.gridx=0;
gbc.gridy=1;
p.add(b2,gbc);
gbc.gridx=1;
gbc.gridy=1;
p.add(b3,gbc);
gbc.gridx=0;
gbc.gridy=2;
p.add(b4,gbc);
gbc.gridx=1;
gbc.gridy=2;
p.add(b5,gbc);
this.setSize(300, 300);
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new GuiTest5();
}
}
练习二、【weightx 】指定如何分配额外的水平空间。 如果得到的布局在水平方向上比需要填充的区域小,那么系统会将额外的空间按其权重比例分布到每一列
weighty同理
练习三、水平垂直填充
练习四、按钮会自动放在显示区域的东边