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)
站点信息
- 文章2302
- 用户1336
- 访客10968998
每日一句
Qingming Festival invites us to honor ancestors with quiet reflection and respect.
清明节邀请我们以静思与敬意祭奠祖先。
清明节邀请我们以静思与敬意祭奠祖先。
新会员