package lab9;
import java.awt.Button;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import javax.swing.JFrame;
/**
*
* @Project_name: JavaLesson
* @Description: 测试GridBagLayout
* @Author LinYiSong
* @Date: 2010-11-21~2010-11-21
* @Vesion:
*/
public class GridBagLayoutTest {
private JFrame app = new JFrame();
/**
* 在网格布局中GridBagLayout按约束GridBagConstraints生成对应的Button
* @param name
* @param gridbag
* @param c
*/
public void makebutton(String name, GridBagLayout gridbag,
GridBagConstraints c) {
Button button = new Button(name);
gridbag.setConstraints(button, c);
app.add(button);
}
public void launchFrame() {
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
app.setLocation(100, 300);
app.setSize(200, 200);
/*
*网格布局
*/
GridBagLayout gridbag = new GridBagLayout();
/*
* GridBagConstraints 类指定使用 GridBagLayout 类布置的组件的约束
*/
GridBagConstraints c = new GridBagConstraints();
app.setLayout(gridbag);
/**
* fill
* 当组件的显示区域(框体大小)大于它所请求的显示区域的大小(原本设定的大小)时使用此字段。(放大框体)
* 它可以确定是否调整组件大小,以及在需要的时候如何进行调整。
* 以下值适用于 fill:
* NONE:不调整组件大小。
* HORIZONTAL:加宽组件,使它在水平方向上填满其显示区域,但是不改变高度。
* VERTICAL:加高组件,使它在垂直方向上填满其显示区域,但是不改变宽度。
* BOTH:使组件完全填满其显示区域。
*/
c.fill = GridBagConstraints.BOTH;
/**
* weightx
* 指定如何分布额外的水平空间,其中额外是指 水平空间上 布局< 需填充(还有更多空间允许填充)
* 系统会将额外的空间按照其权重比例分布到每一列,而列的权重将是列的所有组件中最大的 weightx
* 权重为零的列不会得到额外的空间。 如果所有的权重都为零,则所有的额外空间都将出现在单元格的网格之间和左右边缘之间
*/
c.weightx = 1.0;
makebutton("Button1", gridbag, c);
makebutton("Button2", gridbag, c);
makebutton("Button3", gridbag, c);
/**
* gridwidth
*指定组件显示区域的 某一行 的单元格数
*REMAINDER 是指除了剩下的未指定的显示区域
*RELATIVE 从gridx~倒2格
*gridwidth 应为非负,默认值为 1。
*/
c.gridwidth = GridBagConstraints.REMAINDER; // end row
makebutton("Button4", gridbag, c);
c.weightx = 0.0; // reset to the default
makebutton("Button5", gridbag, c); // another row
c.gridwidth = GridBagConstraints.RELATIVE; // next-to-last in row
makebutton("Button6", gridbag, c);
c.gridwidth = GridBagConstraints.REMAINDER; // end row
makebutton("Button7", gridbag, c);
c.gridwidth = 1; // reset to the default
c.gridheight = 2;
c.weighty = 1.0;
makebutton("Button8", gridbag, c);
c.weighty = 0.0; // reset to the default
c.gridwidth = GridBagConstraints.REMAINDER; // end row
c.gridheight = 1; // reset to the default
makebutton("Button9", gridbag, c);
makebutton("Button10", gridbag, c);
app.setVisible(true);
}
public GridBagLayoutTest() {
launchFrame();
app.setVisible(true);
}
public static void main(String[] args) {
new GridBagLayoutTest();
}
}