目录
1-2、按钮3(名为:0.0)全填充(BOTH)的运行效果:
2-2、按钮3(名为:“0.0”)垂直填充(VERTICAL)的运行效果:
3-2、按钮3(名为:“0.0”)水平填充(HORIZONTAL)的运行效果:
一、关键代码
(一)、网格组约束条件
由下代码创建一个网格包约束条件g_0,最后再由g_0分别指定不同的条件,如位置、尺寸,等。
// Grid(网格),Bag(包),Constraints(限制)
GridBagConstraints g_0=new GridBagConstraints();// 创建一个网格包约束条件g_0
(二)、约束的“条件”
以下为本文用到的网格包约束条件中的“条件”。
1、坐标
网格(grid)的x,y坐标(gridx、gridy)
坐标数值由0开始,并未由1开始。坐标的第0行,即为第一行。
g_0.gridx=0;// x坐标1行位置,计算机以0为第一个
g_0.gridy=0;// y坐标1列位置
2、尺寸
网格(grid)的宽度(width)、高度(height)
(尺寸数值非零开头,和坐标不同)
g_0.gridwidth=1;// 宽度
g_0.gridheight=2;// 高度
3、填充(fill)属性
(1)、默认方式为“居中(center)”
(2)、上下,左右全:BOTH 。小写:both
(3)、垂直:VERTICAL 。小写:vertical
(4)、水平:HORIZONTAL 。小写:horizontal
g_3.fill=GridBagConstraints.BOTH;// 按钮填充方式,全全填充
g_3.fill=GridBagConstraints.VERTICAL;// 填充方式,垂直填充
g_3.fill=GridBagConstraints.HORIZONTAL;// 填充方式,水平填充
二、网格组布局说明
网格组布局,可以更精确的布置窗体内各构建的位置。在一个窗体中使用网格组布局,布置“按钮”“标签”等构件时,可以先引入网格组布局包A,然后再根据自己的需求对A设置好相关的约束条件便可。“约束”内容,比如:坐标、尺寸、填充方式、方位、具体位置等。本文记录的约束内容为:坐标、尺寸和填充方式,其它约束条件下篇博文记录。
(一)、源码A
1、源码A说明
展示网格组布局中约束条件的效果,先建立一个“窗体”,代码部分看源码A的方法way1,窗体的属性详细内容看way1部分代码。
在“窗体”中添加3个“按钮”,具体为源码A中的方法way2部分代码,数据坐标分别为(0-0),(1-1),(2-2),(x-y坐标)。由于坐标数值由0开始,则前面的way2的三个坐标分别为(第一行-第一列),(第二行-第二列),(第三行-第三列)。
源码A如下
/**所想:
网格组布局
*/
/*
引入的包,以下的import等等
*/
import java.awt.GridBagConstraints;// Constraints(限制)
import java.awt.GridBagLayout;//网格包
import java.awt.Container;// 容器
import java.awt.Color;// 颜色
import javax.swing.JFrame; // 窗体
import javax.swing.JButton;// 按钮
import javax.swing.JPanel;// java面板
class Demo{
JFrame f=new JFrame();// 设置主窗体
Container c;// 主容器
/*
方法way1
创建一个新方法way1,设置窗体的规格
Content(容器),Pane(镶嵌),Grid(网格),Bag(包),Layout(布局)
*/
void way1(){
// Content(容器),Pane(镶嵌),layout(布局)
c=f.getContentPane();//容器c镶嵌于窗体中
c.setLayout(new GridBagLayout());// 容器c建立网格包布局
f.setSize(1000,800);// 设置窗体宽、高
// location(位置),Relative(相对于),括号里为某“组件”参数,为null时窗体在桌面居中显示
f.setLocationRelativeTo(null);// 窗体在桌面居中显示,null(空值)
// Default(默认),operation(操作),点击×程序便停止运行
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
/*
方法way2
创建一个新方法way2,将3个按钮限制于x,y坐标为1-1,2-2,3-3的布局中
主要使用:gridx及gridy,网格坐标的意思
*/
void way2(){
// Grid(网格),Bag(包),Constraints(限制)
GridBagConstraints g_0=new GridBagConstraints();// 创建一个网格包约束条件g_0
g_0.gridx=0;// x坐标1行位置,计算机以0为第一个
g_0.gridy=0;// y坐标1列位置
c.add(new JButton("按钮1"),g_0);// 在容器里创建一个“按钮1”,约束条件“g_0”
GridBagConstraints g_1=new GridBagConstraints();// 约束“g_1”
g_1.gridx=1;// x坐标2行位置
g_1.gridy=1;// y坐标2列位置
c.add(new JButton("按钮2"),g_1);// 容器里加“按钮2”,约束为“g_1”
GridBagConstraints g_2=new GridBagConstraints();//约束“g_2”
g_2.gridx=2;// x坐标3行位置
g_2.gridy=2;// y坐标3列位置
c.add(new JButton("按钮3"),g_2);// 容器里加“按钮3”,约束为“g_2”
}
public static void main(String[] args){
Demo d=new Demo();// 创建一个新类型d
d.way1();// 对d使用方法way1,创建一个窗体,包括布局参数等
d.way2();// 对d使用方法way2,容器里的按钮等
d.f.setVisible(true);// 类型d、窗体可见,为真
}
}