java核心技术第17讲布局管理器_第1页
java核心技术第17讲布局管理器_第2页
java核心技术第17讲布局管理器_第3页
java核心技术第17讲布局管理器_第4页
java核心技术第17讲布局管理器_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

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

文档简介

Java程序设计主讲:4.3布局管理器学习目录布局管理器的基本概念顺序布局管理器(FlowLayout)边界布局管理器(BorderLayout)网格布局管理器(GridLayout)布局管理器概述GUI布局管理是指将加入到容器(Container)的组件按照一定的顺序和规则放置,使得GUI界面更适于用户的操作的一系列配置管理工作。容器只负责将组件放入其中,而不负责对这件组件放置的位置和组件尺寸大小进行设置。对于这些布局的管理交由专门的布局管理器来完成。

在Java中布局管理器是通过实现一个LayoutManager的接口,来确保各种类型的布局管理器具有统一的使用方法。布局管理器类图

常用布局管理器在Java中,常用的布局管理器有:顺序布局(FlowLayout)边界布局(BorderLayout)网格布局(GridLayout)卡片布局(CardLayout)盒式布局(BoxLayout)顺序布局

设置为顺序布局方式的容器上放置的组件会顺序从左向右排列一般面板(JPanel)的默认布局方式为顺序布局,而在窗口(JFrame)中的默认布局方式为边界布局。顺序布局管理器FlowLayout类位于java.awt设置容器类为流式布局方式,使用容器类的setLayout()方法voidsetLayout(LayoutManager

manager)设置布局模式为manager模式示例4.3.1运用FlowLayout布局管理器管理界面上的六个按钮。 publicComponentponents() { //创建一个面板并设定其布局管理器为FlowLayoutJPanelpane=newJPanel(newFlowLayout()); //向面板顺序加入按钮 pane.add(newJButton("按钮1")); pane.add(newJButton("按钮2")); pane.add(newJButton("按钮3")); pane.add(newJButton("按钮4")); pane.add(newJButton("按钮5")); pane.add(newJButton("按钮6")); returnpane;//返回当前面板 }练习4.3.1请运用顺序布局管理器对具有五个标签组件的窗体进行布局管理,要求组件对齐的方式为左对齐方式。顺序布局进阶

importjavax.swing.*;importjava.awt.FlowLayout;publicclassFlowLayoutDemoextendsJFrame{

JButtonjStart,jReset;publicFlowLayoutDemo(){super("测试顺序布局模式");jStart=newJButton("开始");jReset=newJButton("重置");FlowLayoutflo=newFlowLayout();

this.setLayout(flo);this.add(jStart);

this.add(jReset);

this.setBounds(200,200,300,100);

this.setVisible(true); }……}

运行结果

创建顺序布局管理器对象将窗口的布局模式设置为顺序(流式)布局方式边界布局

边界布局管理器为BorderLayout类位于java.awt包边界布局方式将界面划分为五个使用区域示例4.3.2运用BorderLayout布局管理器管理界面上的五个按钮。publicComponentponents(){JPanelpan=newJPanel();pan.setLayout(newBorderLayout());//设置布局管理器为BorderLayoutpan.add(BorderLayout.NORTH,newJButton("北方"));//放置在顶部pan.add(BorderLayout.SOUTH,newJButton("南方"));//放置在底部pan.add(BorderLayout.EAST,newJButton("东方"));//放置在右部pan.add(BorderLayout.WEST,newJButton("西方"));//放置在左部pan.add(BorderLayout.CENTER,newJButton("中央"));//放置在中间位置returnpan;}练习4.3.2请运用边界布局管理器对具有五个标签组件的窗体进行布局管理。边界布局进阶

classBorderLayoutPanelextendsJFrame{JLabelgameInfo,leftBorder,rightBorder;JScrollPanetextScroll;JTextAreagameText;JButtonstartButton; publicBorderLayoutPanel(){ super("测试边界布局模式");this.setLayout(newBorderLayout());gameInfo=newJLabel("游戏说明");leftBorder=newJLabel("左边界");rightBorder=newJLabel("右边界");startButton=newJButton("开始游戏");this.add(gameInfo,"North");gameText=newJTextArea("游戏说明",100,100);textScroll=newJScrollPane(gameText,ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS,ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS);this.add(textScroll,"Center");this.add(gameInfo,"North");this.add(leftBorder,"West");this.add(rightBorder,"East");this.add(startButton,"South"); }

运行结果

设定面板容器的布局模式为边界布局

添加组件到面板上部

添加组件到面板中部网格布局

网格布局方式将界面平均划分为几个使用区域,这些区域类似表格网格布局管理器GridLayout类,位于java.awt包构造方法说明GridLayout()创建一个网格布局,默认的网格数为1行1列GridLayout(introws,intcols)创建一个网络布局,其行列数分别为:rows行cols列示例4.3.3运用GridLayout创建一个三行三列按钮的窗体。 publicComponentponents() {//创建一个面板并设定其布局管理器为GridLayout JPanelpane=newJPanel(newGridLayout(3,3)); //向面板顺序加入按钮 pane.add(newJButton("1")); pane.add(newJButton("2")); pane.add(newJButton("3")); pane.add(newJButton("4")); pane.add(newJButton("5")); pane.add(newJButton("6")); pane.add(newJButton("7")); pane.add(newJButton("8")); pane.add(newJButton("9")); returnpane; }注意:当加入容器的组件数量超过所设定的组件放置档数时,GridLayout会自动增加列数。网格布局进阶

importjava.awt.GridLayout;importjavax.swing.*;classGridLayoutPanelextendsJFrame{JLabeljA,jB,jLeft,jRight;

publicGridLayoutPanel(){ …… jA=newJLabel(iconA); jB=newJLabel(iconB); jRight=newJLabel(iconRight); jLeft=newJLabel(iconLeft);

GridLayoutglo=newGridLayout(1,4);

this.setLayout(glo);

this.add(jA);

this.add(jLeft);

this.add(jRight);

this.add(jB);}}

运行结果

创建网络布局管理器对象将窗口的布局模式设置为网络布局方式网格包布局管理器GridBagLayout类似于网格布局,允许组件放置时跨越多行或列。示例4.3.4请使用GridBagLayout布局管理设计一个如下图所示的窗体。publicComponentponents(){ //创建一个面板并设定其布局管理器为网格包布局JPanelpane=newJPanel(newGridBagLayout()); GridBagConstraintsgc=newGridBagConstraints();…… Stringnames[]={"组合框","李四","王五"}; boBoxcomb=newboBox(names);//创建组合框对象 gc.fill=GridBagConstraints.VERTICAL;//设定伸缩性为垂直型 gc.gridx=0;//设定放置的位置为第0列 gc.gridy=0;//设定放置的位置为第0行 gc.gridwidth=1;//设定组件的宽度为1列 gc.gridheight=3;//组件的高度为3行 gc.weighty=10;//垂直扩展度为10 …… pane.add(textField,gc);//将单文本框加入到面板容器中 returnpane;//返回组件容器(即控件面板)}练习4.3.3请参照示例编程创建图4.3.13所示的窗体。本节小结在Java的GUI系统设计中,通常使用布局管理器来管理组件容器中的布局,即控制容器中的组件的位置和尺寸大小。在Java的awt包中提供多种功能强大、灵活的布局管理器,这些布局管理器通过实现LayoutManager接口来提供统一的接口。常用的有:

FlowLayout、BorderLayout、GridLayout、GridBagL

温馨提示

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

评论

0/150

提交评论