[转帖]Java 的布局管理器GridBagLayout的使用方法【图文】_Android, Python及开发编程讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  Android, Python及开发编程讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 3756 | 回复: 0   主题: [转帖]Java 的布局管理器GridBagLayout的使用方法【图文】        下一篇 
Leon
注册用户
等级:少校
经验:1436
发帖:116
精华:7
注册:2013-1-4
状态:离线
发送短消息息给Leon 加好友    发送短消息息给Leon 发消息
发表于: IP:您无权察看 2013-1-7 9:32:11 | [全部帖] [楼主帖] 楼主

GridBagLayout是java里面最重要的布局管理器之一,可以做出很复杂的布局,可以说GridBagLayout是必须要学好的的,

GridBagLayout 类是一个灵活的布局管理器,它不要求组件的大小相同便可以将组件垂直、水平或沿它们的基线对齐。

每个 GridBagLayout 对象维持一个动态的矩形单元网格,每个组件占用一个或多个这样的单元,该单元被称为显示区域。

下面就通过一个记事本案例去说明GridBagLayout的使用方法。

分析:

带有箭头的说明可以拉伸的。

4占用4个格子,6占用4个格子。如果设置6可以拉伸了,那么4也会跟着拉伸。

但是如果设置4拉伸,那么7所在的列也可以拉伸,所以4不能设置拉伸。我们应该设置4是跟随6进行拉伸。

灰色的线是为了看清布局的大概,组件占用的格子数。

北京联动北方科技有限公司

北京联动北方科技有限公司

  1. import java.awt.*; 
  2. import javax.swing.*; 
  3. public class GridBagDemo extends JFrame { 
  4.  public static void main(String args[]) { 
  5.  GridBagDemo demo = new GridBagDemo(); 
  6.  } 
  7.  
  8.  public GridBagDemo() { 
  9.  init(); 
  10.  this.setSize(600,600); 
  11.  this.setVisible(true); 
  12.  } 
  13.  public void init() { 
  14.  j1 = new JButton("打开"); 
  15.  j2 = new JButton("保存"); 
  16.  j3 = new JButton("另存为"); 
  17.  j4 = new JPanel(); 
  18.  String[] str = { "java笔记", "C#笔记", "HTML5笔记" }; 
  19.  j5 = new JComboBox(str); 
  20.  j6 = new JTextField(); 
  21.  j7 = new JButton("清空"); 
  22.  j8 = new JList(str); 
  23.  j9 = new JTextArea(); 
  24.  j9.setColor.PINK);//为了看出效果,设置了颜色 
  25.  GridBagLayout layout = new GridBagLayout(); 
  26.  this.setLayout(layout); 
  27.  this.add(j1);//把组件添加进jframe 
  28.  this.add(j2); 
  29.  this.add(j3); 
  30.  this.add(j4); 
  31.  this.add(j5); 
  32.  this.add(j6); 
  33.  this.add(j7); 
  34.  this.add(j8); 
  35.  this.add(j9); 
  36.  GridBagConstraints s= new GridBagConstraints();//定义一个GridBagConstraints, 
  37.  //是用来控制添加进的组件的显示位置 
  38.  s.fill = GridBagConstraints.BOTH; 
  39.  //该方法是为了设置如果组件所在的区域比组件本身要大时的显示情况 
  40.  //NONE:不调整组件大小。 
  41.  //HORIZONTAL:加宽组件,使它在水平方向上填满其显示区域,但是不改变高度。 
  42.  //VERTICAL:加高组件,使它在垂直方向上填满其显示区域,但是不改变宽度。 
  43.  //BOTH:使组件完全填满其显示区域。 
  44.  s.gridwidth=1;//该方法是设置组件水平所占用的格子数,如果为0,就说明该组件是该行的最后一个 
  45.  s.weightx = 0;//该方法设置组件水平的拉伸幅度,如果为0就说明不拉伸,不为0就随着窗口增大进行拉伸,0到1之间 
  46.  s.weighty=0;//该方法设置组件垂直的拉伸幅度,如果为0就说明不拉伸,不为0就随着窗口增大进行拉伸,0到1之间 
  47.  layout.setConstraints(j1, s);//设置组件 
  48.  s.gridwidth=1; 
  49.  s.weightx = 0; 
  50.  s.weighty=0; 
  51.  layout.setConstraints(j2, s); 
  52.  s.gridwidth=1; 
  53.  s.weightx = 0; 
  54.  s.weighty=0; 
  55.  layout.setConstraints(j3, s); 
  56.  s.gridwidth=0;//该方法是设置组件水平所占用的格子数,如果为0,就说明该组件是该行的最后一个 
  57.  s.weightx = 0;//不能为1,j4是占了4个格,并且可以横向拉伸, 
  58.  //但是如果为1,后面行的列的格也会跟着拉伸,导致j7所在的列也可以拉伸 
  59.  //所以应该是跟着j6进行拉伸 
  60.  s.weighty=0; 
  61.  layout.setConstraints(j4, s) 
  62.  ;s.gridwidth=2; 
  63.  s.weightx = 0; 
  64.  s.weighty=0; 
  65.  layout.setConstraints(j5, s); 
  66.  ;s.gridwidth=4; 
  67.  s.weightx = 1; 
  68.  s.weighty=0; 
  69.  layout.setConstraints(j6, s); 
  70.  ;s.gridwidth=0; 
  71.  s.weightx = 0; 
  72.  s.weighty=0; 
  73.  layout.setConstraints(j7, s); 
  74.  ;s.gridwidth=2; 
  75.  s.weightx = 0; 
  76.  s.weighty=1; 
  77.  layout.setConstraints(j8, s); 
  78.  ;s.gridwidth=5; 
  79.  s.weightx = 0; 
  80.  s.weighty=1; 
  81.  layout.setConstraints(j9, s); 
  82.  } 
  83.  JButton j1; 
  84.  JButton j2; 
  85.  JButton j3; 
  86.  JPanel j4; 
  87.  JComboBox j5; 
  88.  JTextField j6; 
  89.  JButton j7; 
  90.  JList j8; 
  91.  JTextArea j9; 

本文出自 “5G时代” 博客,请务必保留此出处http://taoweiji.blog.51cto.com/4204716/1109632




赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论