版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
布局管理物流信息管理系统开发组件在容器中的位置和尺寸是由布局管理器决定的,每当需要重新调整屏幕大小时,都要用到布局管理器。Swing常用的布局管理器有4种,分别是FlowLayout(流式布局管理器)、BorderLayout(边界布局管理器)、GridLayout(网格布局管理器)、GridBagLayout(网格包布局管理器)。Swing容器在创建时都会使用一种默认的布局管理器,在程序中可以通过调用容器对象的setLayout()方法设置布局管理器,通过布局管理器自动进行组件的布局管理。布局管理器FlowLayout属于流式布局管理器,是最简单的布局管理器。在这种布局下,容器会将组件按照添加顺序从左向右放置。当到达容器的边界时,自动将组件放到下一行的开始位置。这些组件可以左对齐、居中对齐(默认方式)或右对齐的方式排列。1FlowLayoutFlowLayout类的常用方法及变量如下表。1FlowLayout方法及常量类型功能描述publicFlowLayout()构造方法组件默认居中对齐,水平、垂直间距默认为5个单位publicFlowLayout(intalign)构造方法指定组件相对于容器的对齐方式,水平、垂直间距默认为5个单位publicFlowLayout(intalign,inthgap,intvgap)构造方法指定组件的对齐方式和水平、垂直间距publicstaticfinalintCENTER常量居中对齐publicstaticfinalintLEADING常量与容器的开始端对齐方式一样publicstaticfinalintLEFT常量左对齐publicstaticfinalintRIGHT常量右对齐上表列出了FlowLayout的三个构造方法及四个常量。构造方法中的参数align决定组件在每行中相对于容器边界的对齐方式,可以使用FlowLayout类中提供的常量作为参数传递给构造方法;参数hgap和参数vgap分别设定组件之间的水平和垂直间隙,可以填入一个任意数值。FlowLayout类的常量中,FlowLayout.LEFT表示左对齐、FlowLayout.RIGHT表示右对齐、FlowLayout.CENTER表示居中对齐。1FlowLayout1importjavax.swing.*;2importjava.awt.*;3classExample03{4publicstaticvoidmain(String[]args){5JFrameframe=newJFrame("helloworld");6//设置窗体中的布局管理器为FlowLayout,所有的组件居中对齐,水平和垂直间距为37frame.setLayout(newFlowLayout(FlowLayout.CENTER,3,3));接下来通过一个案例学习FlowLayout布局管理器的用法1FlowLayout8JButtonbutton=null;9for(inti=0;i<9;i++){10button=newJButton("按钮"+i);11frame.add(button);12}13frame.setSize(280,250);14frame.setVisible(true);15}16}接下来通过一个案例学习FlowLayout布局管理器的用法1FlowLayout1FlowLayout程序运行结果如下图在上述代码中,使用流式布局管理器对按钮进行管理。在这个过程中,第5行代码创建了一个JFrame窗口frame并,在创建窗体对象的同时定义了窗体对象的标题为“helloworld”,第7行代码通过JFrame的setLayout属性将该窗口的布局管理器设置为FlowLayout。在第8~12行代码中,定义了一个JButton的按钮,然后使用for循环向窗口中添加9个按钮。通过运行结果可以看出,frame窗口中的按钮按照流式布局进行排列。1FlowLayout
FlowLayout布局管理器的特点就是可以将所有组件像流水一样依次进行排列,不需要用户明确的设定,但是在灵活性上相对差了点。例如,将上图中的窗体拉伸变宽,按钮的大小和按钮之间的间距将保持不变,但按钮相对于容器边界的距离会发生变化,窗体拉伸变宽效果如右图。1FlowLayoutBorderLayout(边界布局管理器)是一种较为复杂的布局方式,它将窗体划分为五个区域,分别是东(EAST)、南(SOUTH)、西(WEST)、北(NORTH)、中(CENTER)。组件可以被放置在这五个区域中的任意一个区域中。BorderLayout的布局效果如右图。2BorderLayout
BorderLayout将窗体划分为五个区域,其中箭头是指改变容器大小时,各个区域需要改变的方向。也就是说,在改变窗体大小时,NORTH和SOUTH区域高度不变,宽度调整;WEST和EAST区域宽度不变,高度调整;CENTER会相应进行调整。2BorderLayout2BorderLayout当向BorderLayout管理的窗体中添加组件时,需要调用add(Componentcomp,Objectconstraints)方法,其中,参数comp表示要添加的组件,参数constraints是一个Object类型的对象,用于指定组件添加方式以及添加位置。向add()方法传参时,可以使用BorderLayout类提供的5个常量,它们分别是EAST、SOUTH、WEST、NORTH和CENTER。BorderLayout的常用方法及常量如下表。2BorderLayout方法及常量类型功能描述publicBorderLayout()构造方法构造没有间距的布局器publicBorderLayout(intalign,inthgap,intvgap)构造方法构造有水平和垂直间距的布局器publicstaticfinalStringEAST常量将组件设置在东区域publicstaticfinalStringWEST常量将组件设置在西区域publicstaticfinalStringSOUTH常量将组件设置在南区域publicstaticfinalStringNORTH常量将组件设置在北区域publicstaticfinalStringCENTER常量将组件设置在中区域1importjavax.swing.*;2importjava.awt.*;3classBorderLayoutDemoextendsJFrame{4//构造函数,初始化对象值5publicBorderLayoutDemo(){6//设置为边界布局,组件间横向、纵向间距均为5像素7setLayout(newBorderLayout(5,5));8setFont(newFont("Helvetica",Font.PLAIN,14));9//将按钮添加到窗口中10getContentPane().add("North",newJButton(BorderLayout.NORTH));接下来通过一个案例演示BorderLayout布局管理器对组件布局的效果2BorderLayout11getContentPane().add("East",newJButton(BorderLayout.EAST));12getContentPane().add("West",newJButton(BorderLayout.WEST));13getContentPane().add("Center",newJButton(BorderLayout.CENTER));14}15publicstaticvoidmain(Stringargs[]){16BorderLayoutDemof=newBorderLayoutDemo();17f.setTitle("边界布局");18f.pack();19f.setVisible(true);20f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);21f.setLocationRelativeTo(null);//让窗体居中显示22}23}接下来通过一个案例演示BorderLayout布局管理器对组件布局的效果2BorderLayout2BorderLayout程序运行结果如下图2BorderLayout上述代码中,第7行代码为Frame容器设置了BorderLayout布局管理器(也可以不用设置,Frame默认使用BorderLayout布局管理器),第10~14行代码在容器的东、南、西、北、中五个区域各放置了1个按钮。2BorderLayout
BorderLayout的优点就是可以限定各区域的边界,当用户改变容器窗口大小时,各个组件的相对位置不变。但需要注意的是,向BorderLayout管理的容器添加组件时,如果不指定添加到哪个区域,则默认添加到CENTER区域,并且只能放置一个组件,如果向一个区域中添加多个组件时,后放入的组件会覆盖先放入的组件。3GridLayoutGridLayout布局管理器是以网格的形式管理容器中组件布局的。GridLayout使用纵横线将容器分成n行m列大小相等的网格,每个网格中放置一个组件。添加到容器中的组件首先放置在第1行第1列(左上角)的网格中,然后在第1行的网格中从左向右依次放置其他组件。一行放满之后,继续在下一行中从左到右放置组件。GridLayout管理方式与FlowLayou类似,但与FlowLayout不同的是,使用GridLayout管理的组件将自动占据网格的整个区域。3GridLayoutGridLayout的常用构造方法如下表方法声明功能描述GridLayout()默认只有一行,每个组件占一列GridLayout(introws,intcols)指定容器的行数和列数GridLayout(introws,intcols,inthgap,intvgap)指定容器的行数和列数以及组件之间的水平、垂直间距3GridLayout列出了GridLayout的三个构造方法,其中,参数rows代表行数,cols代表列数,hgap和vgap规定水平和垂直方向的间隙。水平间隙指的是网格之间的水平距离,垂直间隙是指网格之间的垂直距离。1importjava.awt.*;2publicclassExample05{3 publicstaticvoidmain(String[]args){4 Framef=newFrame("GridLayout");//创建一个名为GridLayout的窗体5 f.setLayout(newGridLayout(3,3));//设置该窗体为3*3的网格6 f.setSize(300,300);//设置窗体大小7 f.setLocation(400,300);8 //下面的代码是循环添加9个按钮到GridLayout中9 for(inti=1;i<=9;i++){10 Buttonbtn=newButton("btn"+i);11 f.add(btn);//向窗体中添加按钮12 }13 f.setVisible(true);14 }15}接下来通过一个案例演示GridLayout布局的用法3GridLayout3GridLayout程序运行结果如下图。4GridBagLayout
GridBagLayout是最灵活、最复杂的布局管理器。GridBagLayout与GridLayout布局管理器类似,不同的是,GridBagLayout允许网格中的组件大小各不相同,而且允许一个组件跨越一个或者多个网格。4GridBagLayout使用GridBagLayout布局管理器的步骤如下:1
创建GridbagLayout布局管理器,设置容器采用该布局管理器。具体示例如下:GridBagLayoutlayout=newGridBagLayout();container.setLayout(layout);4GridBagLayout2创建GridBagContraints对象,并设置该对象的相关属性(设置布局约束条件)。具体示例如下:GridBagConstraintsconstraints=newGridBagConstraints();constraints.gridx=1; //设置网格的左上角横向索引constraints.gridy=1; //设置网格的左上角纵向索引constraints.gridwidth=1; //设置组件横向跨越的网格constraints.gridheight=1; //设置组件纵向跨越的网格4GridBagLayout3调用GridBagLayout对象的setConstraints()方法,建立GridBagConstraints对象和受控组件之间的关联。具体示例如下:layout.setConstraints(component,constraints);4向容器中添加组件。具体示例如下:container.add(conponent);GridBagConstraints对象可以重复使用。如果改变布局,只需要改变GridBagConstraints对象的属性即可。如果要向容器中添加多个组件,则重复(2)、(3)、(4)步骤。4GridBagLayout从上面的步骤可以看出,使用GridBagLayout布局管理器的关键在于GridBagConstraints对象。GridBagConstraint类才是控制容器中每个组件布局的核心类,在GridBagConstraints类中有很多用于设置约束条件的属性。GridBagConstraints类的常用属性如下表。4GridBagLayout属性作用gridx和gridy设置组件所在网格的横向和纵向索引(即所在的行和列)。如果将gridx和gridy的值设置为GridBagConstraints.RELATIVE(默认值),表示当前组件紧跟在上一个组件后面。gridwidth和gridheight设置组件横向、纵向跨越几个网格,两个属性的默认值都是1。如果把这两个属性的值设为GridBagConstraints.REMAINER表示组件在当前行或列上为最后一个组件。如果把这两个属性的值设为GridBagConstraints.RELATIVE,表示组件在当前行或列上为倒数第二个组件。属性作用fill如果组件的显示区域大于组件需要的大小,设置组件改变方式,该属性接收以下几个属性值:NONE:默认,不改变组件大小。HORIZONTAL:使组件水平方向足够长以填充显示区域,但是高度不变,VERTICAL:使组件垂直方向足够高以填充显示区域,但长度不变。BOTH:使组件足够大,以填充整个显示区域。weightx和weighty设置组件占领容器中水平方向和垂直方向多余空白的比例(也称为权重)。假设容器的水平方向放置三个组件,组件的weightx属性值分别为1、2、3,当容器宽度增加60个像素时,这三个容器分别增加10、20、和30的像素。weightx和weighty属性的默认值是0,即不占领多余的空间。4GridBagLayout4GridBagLayout如果希望组件的大小随着容器的增大而增大,必须同时设置GridBagConstraints对象的fill属性和weightx、weighty属性。4GridBagLayout1importjava.awt.*;2classLayoutextendsFrame{3 publicLayout(Stringtitle){4 GridBagLayoutlayout=newGridBagLayout();5 GridBagConstraintsc=newGridBagConstraints();6 this.setLayout(layout);7 c.fill=GridBagConstraints.BOTH; //设置组件横向纵向可以拉伸8 c.weightx=1; //设置横向权重为19 c.weighty=1; //设置纵向权重为110 this.addComponent("btn1",layout,c);11 this.addComponent("btn2",layout,c);12 this.addComponent("btn3",layout,c);
接下来通过一个案例演示GridBagLayout的用法4GridBagLayout13 c.gridwidth=GridBagConstraints.REMAINDER; 14 this.addComponent("btn4",layout,c);15 c.weightx=0; //设置横向权重为016 c.weighty=0; //设置纵向权重为017 addComponent("btn5",layout,c);18 c.gridwidth=1; //设置组件跨一个网格(默认值)19 this.addComponent("btn6",layout,c);20 c.gridwidth=GridBagConstraints.REMAINDER; 21 this.addComponent("btn7",layout,c);22 c.gridheight=2; //设置组件纵向跨两个网格23 c.gridwidth=1; //设置组件横向跨一个网格24 c.weightx=2; //设置横向权重为225 c.weighty=2; //设置纵向权重为226 this.addComponent("btn8",layout,c); 4GridBagLayout27 c.gridwidth=GridBagConstraints.REMAINDER;28 c.gridheight=1;29 this.addC
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 职工劳务合同范本房地产
- 二零二五年度高龄老人租房合同(含意外伤害免责及医疗援助)
- 二零二五年度鱼塘合伙养殖项目投资合作合同
- 二零二五年电视剧导演聘用合同(科幻科幻)
- 二零二五私人车位买卖合同(含车位使用费支付方式)
- 二零二五药店员工劳动时间管理与休息休假合同
- 二零二五药房电子商务平台聘用员工服务合同
- 污水处理厂二零二五年度污水排放总量控制与环保监管合同
- 沈阳二零二五年度手车购置与汽车租赁及驾驶培训服务合同
- 江西省事业单位2025年度合同制工人聘用合同
- 2025年1月普通高等学校招生全国统一考试适应性测试(八省联考)语文试题
- 人教版五年级数学下册(全册)同步练习随堂练习一课一练
- GB/T 29165.4-2015石油天然气工业玻璃纤维增强塑料管第4部分:装配、安装与运行
- 血液净化十大安全目标课件
- 鼻窦负压置换疗课件
- 国际森林日森林防火教育宣传主题班会PPT模板
- 药厂质量管理部QA人员岗位设置表
- 剑桥国际少儿英语“第三级”单词默写表
- (精心整理)高中生物必修二非选择题专题训练
- 小学二年级100以内进退位加减法混合运算
- 市委组织部副部长任职表态发言
评论
0/150
提交评论