Java 布局设计.ppt_第1页
Java 布局设计.ppt_第2页
Java 布局设计.ppt_第3页
Java 布局设计.ppt_第4页
Java 布局设计.ppt_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第12章布局设计 当我们把组件添加到容器中时 希望控制组件在容器中的位置 这就需要学习布局设计的知识 我们将分别介绍java awt包中的FlowLayout BorderLayout CardLayout GridLayout布局类和javax swing border包中的BoxLayout布局类 容器可以使用方法 setLayout 布局对象 来设置自己的布局 12 1FlowLayout布局FlowLayout类创建的对象称做FlowLayout型布局 FlowLayout型布局是Panel型容器的默认布局 即Panel及其子类创建的容器对象 如果不专门为其指定布局 则它们的布局就是FlowLayout型布局 FlowLayout类的常用方法有以下几种 1 FlowLayout 这个构造方法可以创建一个居中对齐的布局对象 例如 FlowLayoutflow newFlowLayout 如果一个容器con使用这个布局对象 con setLayout flow 那么 con可以使用Container类提供的add方法将组件顺序地添加到容器中 组件按照加入的先后顺序从左向右排列 一行排满之后就转到下一行继续从左至右排列 每一行中的组件都居中排列 组件之间的默认水平和垂直间隙是5个像素 2 FlowLayout intalign inthgap intvgap 使用这个构造方法可以创建一个布局对象 其中对齐方式aligin可取值 FlowLayout LEFT FlowLayout CENTER FlowLayout RIGHT 3 publicvoidsetAlignment intalign FlowLayout布局对象调用该方法可以设置布局的对齐方式 4 publicvoidsetHgap inthgap FlowLayout布局对象调用该方法可以设置布局的水平间隙 5 publicvoidsetVgap intvgap FlowLayout布局对象调用该方法可以设置布局的垂直间隙 FlowLayout对应的布局非常简单 遵循这种布局的容器将其中的组件按照加入的先后顺序从左向右排列 一行排满之后就转到下一行继续从左至右排列 每一行中的组件都按着布局指定的对齐方式和垂直间隙排列 当形成多行组件时 行与行之间的间隙是就是布局的垂直间隙 尽管这种布局非常方便 但是当容器内的组件数增加时 就显得高低参差不齐 有时会采用容器嵌套的方法 即把一个容器当做一个组件加入另一个容器 使整个容器的布局达到应用的需求 在下面例子flowlayout1 java中使用FlowLayout布局放置12个组件 12 2BorderLayout布局 BorderLayout也是一种简单的布局策略 如果一个容器使用这种布局 那么容器空间简单地划分为东 西 南 北 中5个区域 中间的区域最大 每加入一个组件都应该指明把这个组件加在哪个区域中 区域由BorderLayout中的静态常量CENTER NORTH SOUTH WEST EAST表示 例如 一个使用BorderLayout布局的容器con 可以使用add方法将一个组件b添加到中心区域 con add b BorderLayout CENTER 或con add BorderLayout CENTER b 添加到某个区域的组件将占据整个区域 每个区域只能放置一个组件 如果向某个已放置了组件的区域再放置一个组件 那么先前的组件将被后者替换掉 使用BorderLayout布局的容器最多能添加5个组件 如果容器中需要加入超过5个组件 就必须使用容器的嵌套或改用其他的布局策略 例子borderlayout java中 12 3Cardlayout布局 使用CardLayout的容器可以容纳多个组件 但是实际上同一时刻容器只能从这些组件中选出一个来显示 就像一叠 扑克牌 每次只能显示最上面一张一样 这个被显示的组件将占据所有的容器空间 依次排序 假设有一个容器con 那么 使用CardLayout的 一般步骤如下 1 创建CardLayout对象作为布局 如 CardLayoutcard newCardLayout 2 使用容器的setLayout 方法为容器设置布局 如 con setLayout card 3 调用容器的方法add Strings Componentb 将组件b加入容器 并给出了显示该组件的代号s 组件的代号是另外给的 和组件的名字没有必然联系 不同的组件代号互不相同 最先加入con的是第一张 依次排序 4 创建的布局card用CardLayout类提供的show 方法 根据容器名字con和其中的组件的代号s显示这一组件 card show con s 也可以按组件加入容器的顺序显示组件 如 card first con 显示con中的第一个组件 card last con 显示con中最后一个组件 card next con 显示当前正在被显示的组件的下一个组件 card previous con 显示当前正在被显示的组件的前一个组件 以下的例子cardlayout java中 有一个面板容器p 在p中放置了20个画布组件 p使用CardLayout布局策 12 4GridLayout布局 GridLayout是使用较多的布局编辑器 其基本布局策略是把容器划分成若干行乘若干列的网格区域 组件就位于这些划分出来的小格中 GridLayout比较灵活 划分多少网格由程序自由控制 而且组件定位也比较精确 使用GridLayout布局编辑器的一般步骤如下 1 使用GridLayout的构造方法GridLayout intm intn 创建布局对象 指定划分网格的行数m和列数n 例如 GridLayoutgrid newGridLayout 10 8 2 使用GridLayout布局的容器调用方法add将组件加入容器 组件从左到右排满第一行之后再排第二行 以此类推使用GridLayout布局的容器最多可添加m n个组件 GridLayout布局中每个网格都是相同大小并且强制组件与网格的大小相同 例题gridlayout画出一个国际象棋棋盘 由于GridLayout布局中每个网格都是相同大小并且强制组件与网格的大小相同 使得容器中的每个组件也都是相同的大小 显得很不自然 为了克服这个缺点 可以使用容器嵌套 如 一个容器使用GridLayout布局 将容器分为三行一列的网格 那么可以把另一个容器添加到某个网格中 而添加的这个容器又可以设置为GridLayout布局 FlowLayout布局 CardLayout布局或BorderLayout布局等 利用这种嵌套方法 可以设计出符合一定需要的布局 12 5BoxLayout布局 用BoxLayout类可以创建一个布局对象 称为盒式布局 BoxLayout在javax swing border包中 javax swing包提供了Box类 该类创建的容器称作一个盒式容器 盒式容器的的默认布局就是盒式布局 而且不允许更改盒式容器的布局 因此 在策划程序的布局时 可以利用容器的嵌套 将某个容器嵌入几个盒式容器 达到你的布局目的 使用盒式布局的容器将组件排列在一行或一列 指定了是行排列还是列排列 使用BoxLayout的构造方法BoxLayout Containercon intaxis 可以创建一个盒式布局对象 并指定容器con使用该布局对象 参数axis的有效值是BoxLayout X AXIS BoxLayout Y AXlS 该参数axis的取值决定盒式布局是行型盒式布局或列型盒式布局 使用行 列 型盒式布局的容器将组件排列在一行 列 组件按加入的先后顺序从左 上 向右 下 排列 容器的两端是剩余的空间 和FlowLayout布局不同的是 使用行型盒式布局的容器只有一行 列 即使组件再多 也不会延伸到下一行 列 这些组件可能会被缩小大小 紧缩在这一行 列 中 行型盒式布局容器中添加的组件的上沿在同一水平线上 列型盒式布局容器中添加的组件的左沿在同一垂直线上 使用Box类的类 静态 方法createHorizontalBox 可以获得一个具有行型盒式布局的盒式容器 使用Box类的类 静态 方法createVerticalBox 可以获得一个具有列型盒式布局的盒式容器 例题boxlayout1 java中用到了三个盒式布局 1 支撑如果想控制盒式布局容器中组件之间的距离 就需要使用水平支撑组件或垂直支撑组件 Box类调用静态方法createHorizontalStrut intwidth 可以得到一个不可见的水平Strut类型对象 称做水平支撑 该水平支撑的高度为0 宽度是width Box类调用静态方法createVertialStrut intheight 可以得到一个不可见的垂直Strut类型对象 称做垂直支撑 参数height决定垂直支撑的高度 垂直支撑的宽度为0 一个行型盒式布局的容器 可以通过在添加的组件之间插入水平支撑来控制组件之间的距离 一个列型盒式布局的容器 可以通过在添加的组件之间插入垂直支撑来控制组件之间的距离 下面的例子boxlayout2 java中 有两个列型盒式容器boxVl boxV2和一个行型盒式容器baseBox 在列型盒式容器的组件之间添加垂直支撑 控制组件之间的距离 将boxVl boxV2添加到baseBox中 并在它俩之间添加了水平支撑 2 胶水如果想处理盒式布局容器的剩余空间 容器的两端是剩余的空间 就需要胶水组件 胶水也是不可见的组件 Box类调用静态方法createHorizontalGlue 可以得到一个不可见的水平Glue类型对象 称做水平胶水 对于行型盒式布局的容器 添加若干个组件后 容器的两端也许会有剩余空间 如果容器最后添加一个水平胶水组件 那么这个水平胶水的大小就和整个剩余空间的大小相同 这样就达到了容器中的组件靠左对齐的目的 如果容器最先添加一个水平胶水组件 那么这个水平胶水的大小就和整个剩余空间的大小相同 这样就达到了容器中的组件靠右对齐的目的 Box类调用静态方法createVerticalGlue 可以得到一个不可见的垂直Glue类型对象 称做垂直胶水 对于列型盒式布局的容器 添加若干个组件后 容器的两端会有剩余空间 如果容器最后添加一个垂直胶水组件 那么这个垂直胶水和整个剩余空间的大小相同 这样就达到了容器中的组件靠上对齐的目的 如果容器最先添加一个垂直胶水组件 那么这个垂直胶水和整个剩余空间的大小相同 就达到了容器中的组件靠下对齐的目的 下面的例子boxlayout3 java中使用胶水组件调整盒式布局容器中组件的对齐方式 12 6null布局 我们可以把一个容器的布局设置为nul

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论