GridBagLayout使用稍微繁琐,但是非常的灵活。可以实现任意效果。下面提供2个例子供学习参考:
例子二:
效果图:
package com.opentcs.customization;
import java.awt.Button;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import javax.swing.JFrame;
public class GridBagLayoutTest {
public static void main(String[] args) {
// TODO 自动生成的方法存根
JFrame f = new JFrame();
GridBagLayout gb = new GridBagLayout();
GridBagConstraints gbc = new GridBagConstraints();
Button[] bs = new Button[10];
f.setLayout(gb);
for (int i = 0; i < bs.length; ++i) {
bs[i] = new Button("button" + i);
}
// 所有组件都可以在横向、纵向扩大
gbc.fill = GridBagConstraints.BOTH;
gbc.weightx = 1;
gb.setConstraints(bs[0], gbc);
f.add(bs[0]);
gb.setConstraints(bs[1], gbc);
f.add(bs[1]);
gb.setConstraints(bs[2], gbc);
f.add(bs[2]);
// 该GridBagConstraints控制的GUI组件将会成为横向最后一个组件
gbc.gridwidth = GridBagConstraints.REMAINDER;
gb.setConstraints(bs[3], gbc);
f.add(bs[3]);
// 该GridBagConstraints控制的GUI组件将在横向不会扩大
gbc.weightx = 0;
gb.setConstraints(bs[4], gbc);
f.add(bs[4]);
// 该GridBagConstraints控制的GUI组件将横跨两个网格
gbc.gridwidth = 2;
gb.setConstraints(bs[5], gbc);
f.add(bs[5]);
// 该GridBagConstraints控制的GUI组件将横跨一个网格
gbc.gridwidth = 1;
// 该GridBagConstraints控制的GUI组件将纵跨两个网格
gbc.gridheight = 2;
// 该GridBagConstraints控制的GUI组件将会成为横向最后一个组件
gbc.gridwidth = GridBagConstraints.REMAINDER;
gb.setConstraints(bs[6], gbc);
f.add(bs[6]);
// 该GridBagConstraints控制的GUI组件将横向跨一个网格,纵向跨两个网格
gbc.gridwidth = 1;
gbc.gridheight = 2;
// 该GridBagConstraints控制的GUI组件纵向扩大的权重是1
gbc.weighty = 1;
gb.setConstraints(bs[7], gbc);
f.add(bs[7]);
// 设置下面的按钮在纵向不会扩大
gbc.weighty = 0;
// 该GridBagConstraints控制的GUI组件将会成为横向最后一个组件
gbc.gridwidth = GridBagConstraints.REMAINDER;
// 该GridBagConstraints控制的GUI组件将纵向跨一个网格
gbc.gridheight = 1;
gb.setConstraints(bs[8], gbc);
f.add(bs[8]);
gb.setConstraints(bs[9], gbc);
f.add(bs[9]);
f.setSize(800, 600);
f.setVisible(true);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setLocationRelativeTo(null);
}
}例子二:
package com.opentcs.customization;
import java.awt.Button;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import javax.swing.JFrame;
public class CGridBagLayout {
public static void main(String[] args) {
JFrame f = new JFrame();
GridBagLayout gb = new GridBagLayout();
GridBagConstraints gbc = new GridBagConstraints();
Button[] btn = new Button[10];
f.setLayout(gb);
for (int i = 0; i < btn.length; ++i)
{
btn[i] = new Button("BUTTON"+i);
}
//所有组件都可以在横向、纵向扩大
gbc.fill = GridBagConstraints.BOTH;
//该GridBagConstraints控制的GUI组件左对齐
gbc.anchor = GridBagConstraints.WEST;
//该GridBagConstraints控制的GUI组件纵向、横向扩大的权重是1
gbc.weighty = 1;
gbc.weightx = 1;
//该GridBagConstraints控制的GUI组件将横向跨一个网格,纵向跨两个网格
gbc.gridwidth = 1; gbc.gridheight = 2;
gb.setConstraints(btn[0], gbc);
f.add(btn[0]);
//该GridBagConstraints控制的GUI组件将横向跨两个网格,纵向跨一个网格
gbc.gridwidth = 2; gbc.gridheight = 1;
gb.setConstraints(btn[1], gbc);
f.add(btn[1]);
//该GridBagConstraints控制的GUI组件将横向跨一个网格,纵向跨两个网格
gbc.gridwidth = 1; gbc.gridheight = 2;
//该GridBagConstraints控制的GUI组件将会成为横向最后一个组件
gbc.gridwidth = GridBagConstraints.REMAINDER;
gb.setConstraints(btn[2], gbc);
f.add(btn[2]);
gbc.gridx = 1; gbc.gridy = 1;//第二行,第二列
//该GridBagConstraints控制的GUI组件将横向跨两个网格,纵向跨一个网格
gbc.gridwidth = 2; gbc.gridheight = 1;
gb.setConstraints(btn[3], gbc);
f.add(btn[3]);
gbc.gridx = 0; gbc.gridy = 2;//第三行,第一列
//该GridBagConstraints控制的GUI组件将横向跨一个网格,纵向跨两个网格
gbc.gridwidth = 1; gbc.gridheight = 2;
gb.setConstraints(btn[4], gbc);
f.add(btn[4]);
gbc.gridx = 1; gbc.gridy = 2;//第三行,第二列
//该GridBagConstraints控制的GUI组件将纵向、横向跨一个网格
gbc.gridwidth = 1; gbc.gridheight = 1;
gb.setConstraints(btn[5], gbc);
f.add(btn[5]);
gbc.gridx = 2; gbc.gridy = 2;//第三行,第三列
gb.setConstraints(btn[6], gbc);
f.add(btn[6]);
gbc.gridx = 3; gbc.gridy = 2;//第三行,第四列
//该GridBagConstraints控制的GUI组件将横向跨一个网格,纵向跨两个网格
gbc.gridwidth = 1; gbc.gridheight = 2;
//该GridBagConstraints控制的GUI组件将会成为横向最后一个组件
gbc.gridwidth = GridBagConstraints.REMAINDER;
gb.setConstraints(btn[7], gbc);
f.add(btn[7]);
gbc.gridx = 1; gbc.gridy = 3;//第四行,第二列
//该GridBagConstraints控制的GUI组件将纵向跨两个网格
gbc.gridwidth = 1; gbc.gridheight = 1;
gb.setConstraints(btn[8], gbc);
f.add(btn[8]);
gbc.gridx = 2; gbc.gridy = 3;//第三行,第三列
gb.setConstraints(btn[9], gbc);
f.add(btn[9]);
f.setSize(800, 600);
f.setVisible(true);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setLocationRelativeTo(null);
}
}效果图:


收藏的用户(0) X
正在加载信息~
推荐阅读
最新回复 (0)
站点信息
- 文章2313
- 用户1336
- 访客11757218
每日一句
Life is short; Live it!
人生苦短,活出精彩。
人生苦短,活出精彩。
信鸽推送报错NSObject checkTargetOtherLinkFlagForObjc
简单利用Clover四叶草安装U盘安装黑苹果
学习使用Java注解
OllyDbg中如何找出B模块中所有调用了A模块的C方法的地方
解决SSH客户端中文乱码
10年后,Android应用程序仍然比iOS应用程序差
C++11特性里面的thread
XPosed微信自动生成二维码
解决android studio "found an invalid color"的问题
T9社区注册方法【勼适様鲃女尔懟死】
Thinkpad x1 Extreme黑苹果10.14.5安装完成
基于大白主题增加图片本地化的功能
Linux系统查看CPU使用率的几个命令
新会员