当前位置:  编程技术>java/j2ee

Java 最重要布局管理器GridBagLayout的使用方法

    来源: 互联网  发布时间:2014-10-22

    本文导语:  GridBagLayout是java里面最重要的布局管理器之一,可以做出很复杂的布局,可以说GridBagLayout是必须要学好的的, GridBagLayout 类是一个灵活的布局管理器,它不要求组件的大小相同便可以将组件垂直、水平或沿它们的基线对齐。 每...

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

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

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

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

分析:

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

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

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

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

运行时的显示效果

代码如下:

import java.awt.*;
import javax.swing.*;

public class GridBagDemo extends JFrame {
public static void main(String args[]) {
GridBagDemo demo = new GridBagDemo();
}

public GridBagDemo() {
init();
this.setSize(600,600);
this.setVisible(true);
}
public void init() {
j1 = new JButton("打开");
j2 = new JButton("保存");
j3 = new JButton("另存为");
j4 = new JPanel();
String[] str = { "java笔记", "C#笔记", "HTML5笔记" };
j5 = new JComboBox(str);
j6 = new JTextField();
j7 = new JButton("清空");
j8 = new JList(str);
j9 = new JTextArea();
     j9.setBackground(Color.PINK);//为了看出效果,设置了颜色
GridBagLayout layout = new GridBagLayout();
this.setLayout(layout);
this.add(j1);//把组件添加进jframe
this.add(j2);
this.add(j3);
this.add(j4);
this.add(j5);
this.add(j6);
this.add(j7);
this.add(j8);
this.add(j9);
GridBagConstraints s= new GridBagConstraints();//定义一个GridBagConstraints,
//是用来控制添加进的组件的显示位置
s.fill = GridBagConstraints.BOTH;
//该方法是为了设置如果组件所在的区域比组件本身要大时的显示情况
//NONE:不调整组件大小。
//HORIZONTAL:加宽组件,使它在水平方向上填满其显示区域,但是不改变高度。
//VERTICAL:加高组件,使它在垂直方向上填满其显示区域,但是不改变宽度。
//BOTH:使组件完全填满其显示区域。
s.gridwidth=1;//该方法是设置组件水平所占用的格子数,如果为0,就说明该组件是该行的最后一个
s.weightx = 0;//该方法设置组件水平的拉伸幅度,如果为0就说明不拉伸,不为0就随着窗口增大进行拉伸,0到1之间
s.weighty=0;//该方法设置组件垂直的拉伸幅度,如果为0就说明不拉伸,不为0就随着窗口增大进行拉伸,0到1之间
layout.setConstraints(j1, s);//设置组件
s.gridwidth=1;
s.weightx = 0;
s.weighty=0;
layout.setConstraints(j2, s);
s.gridwidth=1;
s.weightx = 0;
s.weighty=0;
layout.setConstraints(j3, s);
s.gridwidth=0;//该方法是设置组件水平所占用的格子数,如果为0,就说明该组件是该行的最后一个
s.weightx = 0;//不能为1,j4是占了4个格,并且可以横向拉伸,
//但是如果为1,后面行的列的格也会跟着拉伸,导致j7所在的列也可以拉伸
//所以应该是跟着j6进行拉伸
s.weighty=0;
layout.setConstraints(j4, s)
;s.gridwidth=2;
s.weightx = 0;
s.weighty=0;
layout.setConstraints(j5, s);
;s.gridwidth=4;
s.weightx = 1;
s.weighty=0;
layout.setConstraints(j6, s);
;s.gridwidth=0;
s.weightx = 0;
s.weighty=0;
layout.setConstraints(j7, s);
;s.gridwidth=2;
s.weightx = 0;
s.weighty=1;
layout.setConstraints(j8, s);
;s.gridwidth=5;
s.weightx = 0;
s.weighty=1;
layout.setConstraints(j9, s);
}
JButton j1;
JButton j2;
JButton j3;
JPanel j4;
JComboBox j5;
JTextField j6;
JButton j7;
JList j8;
JTextArea j9;
}

    
 
 

您可能感兴趣的文章:

  • java命名空间java.awt类gridbaglayout的类成员方法: arrangegrid定义及介绍
  • JAVA能用Z轴来布局吗?我用的是GridBagLayout。
  • java命名空间java.awt类gridbaglayout的类成员方法: adjustforgravity定义及介绍
  • java命名空间java.awt类gridbaglayout的类成员方法: minsize定义及介绍
  • java命名空间java.awt类gridbaglayout的类成员方法: preferredsize定义及介绍
  • java命名空间java.awt类gridbaglayout的类成员方法: lookupconstraints定义及介绍
  • java命名空间java.awt类gridbaglayout的类成员方法: comptable定义及介绍
  • java命名空间java.awt类gridbaglayout的类成员方法: layoutcontainer定义及介绍
  • java命名空间java.awt类gridbaglayout的类成员方法: invalidatelayout定义及介绍
  • java命名空间java.awt类gridbaglayout的类成员方法: rowweights定义及介绍
  • java命名空间java.awt类gridbaglayout的类成员方法: getminsize定义及介绍
  • java命名空间java.awt类gridbaglayout的类成员方法: maxgridsize定义及介绍
  • java命名空间java.awt类gridbaglayout的类成员方法: tostring定义及介绍
  • java命名空间java.awt类gridbaglayout的类成员方法: layoutinfo定义及介绍
  • java命名空间java.awt类gridbaglayout的类成员方法: defaultconstraints定义及介绍
  • java命名空间java.awt类gridbaglayout的类成员方法: getconstraints定义及介绍
  • java命名空间java.awt类gridbaglayout的类成员方法: columnwidths定义及介绍
  • java命名空间java.awt类gridbaglayout的类成员方法: getlayoutdimensions定义及介绍
  • java命名空间java.awt类gridbaglayout的类成员方法: rowheights定义及介绍
  • java命名空间java.awt类gridbaglayout的类成员方法: columnweights定义及介绍
  • java命名空间java.awt类gridbaglayout的类成员方法: addlayoutcomponent定义及介绍
  • JAVA中不赞成使用(Deprecated)的方法是否可以使用
  • java堆栈类使用实例(java中stack的使用方法)
  • 如何将GTK中的CallBack函数封装成类似JAVA接口类的使用方法
  • java用静态工厂代替构造函数使用方法和优缺点
  • Java中的this指针使用方法分享
  • Java输入流Scanner/BufferedReader使用方法示例
  • 谁能告诉我哪里能找到java包内部类及方法使用介绍
  • java.exe和javaw.exe的区别及使用方法
  • Java Swing 非常漂亮外观Nimbus的使用方法实例
  • java使用正则表达为数字添加千位符的简单方法
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • Java的GUI布局管理器 Table2GridBag
  • java tapestry5 布局 参数的处理
  • 有那位朋友看过Java2核心技术中的自定义布局管理器,在其中方法preferredLayoutSize的实现是怎样的?看不明白,高手解释一下
  • Java布局管理器使用方法
  • java命名空间java.sql类types的类成员方法: java_object定义及介绍
  • 我想学JAVA ,是买THINK IN JAVA 还是JAVA2核心技术:卷1 好???
  • java命名空间java.awt.datatransfer类dataflavor的类成员方法: imageflavor定义及介绍
  • 请问Java高手,Java的优势在那里??,Java主要适合于开发哪类应用程序
  • java命名空间java.lang.management类managementfactory的类成员方法: getcompilationmxbean定义及介绍
  • 如何将java.util.Date转化为java.sql.Date?数据库中Date类型对应于java的哪个Date呢
  • java命名空间java.lang.management接口runtimemxbean的类成员方法: getlibrarypath定义及介绍
  • 谁有电子版的《Java编程思想第二版(Thinking in java second)》和《Java2编程详解(special edition java2)》?得到给分
  • java命名空间java.lang.management接口runtimemxbean的类成员方法: getstarttime定义及介绍
  • 本人想学java,请问java程序员的待遇如何,和java主要有几个比较强的方向
  • java命名空间java.awt.datatransfer类dataflavor的类成员方法: stringflavor定义及介绍
  • 我对JAVA一窍不通,可惜别人却给我一个Java的project,要我做一个安装程序,请问哪里有JAVA INSTALLER下载,而且我要不要安装java的sdk才能完成此项任务?
  • java命名空间java.security类keystore的类成员方法: getdefaulttype定义及介绍
  • 新年第一天,让我们讨论一下未来一年JAVA的发展趋势! 个人认为,JAVA将主要朝ERP和JAVA手机方面发展!
  • java命名空间java.lang.management接口runtimemxbean的类成员方法: getclasspath定义及介绍
  • 我想学Java,但不知道Java的实用的开发工具有那些,Java主要用在哪些方面,EJB到底是什么东西??
  • java命名空间java.awt.datatransfer类dataflavor的类成员方法: javaserializedobjectmimetype定义及介绍
  • redhat7.3下,java程序打印中文直接用java命令执行正常,用crontab执行java命令为乱码
  • java命名空间java.awt.datatransfer类dataflavor的类成员方法: javafilelistflavor定义及介绍
  • 各位学java的朋友,学java的未来是什么,你们学java都用来开发什么项目啊!来者给分!!
  • java命名空间java.lang.management接口runtimemxbean的类成员方法: getvmname定义及介绍
  • 请问java程序中的import为什么有的用java.….*,而有的又用java.….…,有什么区别吗?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3