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

下载本文档

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

文档简介

Java程序设计主讲:4.3布局管理器学习目录网格包布局管理器(GridBagLayout)盒式布局管理器(BoxLayout)卡片布局管理器(CardLayout)手工布局网格包布局管理器GridBagLayout类似于网格布局,允许组件放置时跨越多行或列。示例4.3.4请使用GridBagLayout布局管理设计一个如下图所示的窗体。publicComponentcreateComponents(){ //创建一个面板并设定其布局管理器为网格包布局

JPanelpane=newJPanel(newGridBagLayout()); GridBagConstraintsgc=newGridBagConstraints();…… Stringnames[]={"组合框","李四","王五"}; JComboBoxcomb=newJComboBox(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所示的窗体。盒式布局管理器BoxLayout布局管理器是一种只允许沿组件容器的x轴(从左到右的水平方向)或y轴(从上到下的垂直方向)方向布置GUI组件的布局管理器。容器在伸缩时GUI组件是不会跟随变化的。通常在创建该种布局管理器时指定其布局方向,水平方向用X_AXIS表示,垂直方向用Y_AXIS表示,即通过该布局管理器的构造函数来设定。BoxLayout的构造器与其它布局管理器有所不同,需要将GUI组件容器对象作为第一个参数,而将布局方向作为第二个参数提供给构造器。示例4.3.5盒式布局管理器请使用BoxLayout布局管理器对三个按钮进行布局。

publicComponentcreateComponents(){//创建GUI组件容器

JPanelpane=newJPanel(); //创建垂直方向的盒式布管理器并将其加入到JPanel组件容器中

pane.setLayout(newBoxLayout(pane,BoxLayout.Y_AXIS)); pane.add(newJButton("按钮1"));//加入第1个按钮

pane.add(newJButton("按钮2"));//加入第2个按钮

pane.add(newJButton("按钮3"));//加入第3个按钮

returnpane;}卡片布局

卡片布局将容器中的每个组件看作一张卡片。一次只能看到一张卡片,而容器充当卡片的堆栈。卡片布局管理器为CardLayout类位于java.awt包方法说明first(Container

parent)翻转到容器的第一张卡片next(Container

parent)翻转到指定容器的下一张卡片previous(Container

parent)翻转到指定容器的前一张卡片last(Container

parent)翻转到容器的最后一张卡片show(Container

parent,

String

name)翻转到已添加到此布局的具有指定name的组件示例4.3.6请使用CardLayout布局管理器实现图4.3.18所示的窗体布局管理。publicvoidaddComponentToPane(Containerpane){JPanelcomboBoxPane=newJPanel();……cb.addItemListener(this);//为组合框注册选择事件

comboBoxPane.add(cb);//将组合框加入到切换面板中

JPanelcard1=newJPanel();//创建按钮卡片层面板容器

……JPanelcard2=newJPanel();card2.add(newJTextField("TextField",20));cards=newJPanel(newCardLayout());cards.add(card1,BUTTONPANEL);cards.add(card2,TEXTPANEL);pane.add(comboBoxPane,BorderLayout.PAGE_START);pane.add(cards,BorderLayout.CENTER);}卡片布局

importjava.awt.CardLayout;importjavax.swing.*;publicclassCardLayoutDemoextendsJFrame{……CardLayoutcardTest=newCardLayout();publicCardLayoutDemo(){

this.setLayout(cardTest);

JPanelpaneInfo=newJPanel(); ……

this.add("nameinfo",paneInfo);JPanelpaneCheck=newJPanel();

……

this.add("selectinfo",paneCheck); cardTest.last(this.getContentPane());

this.show(); }}

运行结果

设定面板容器的布局模式为卡片布局

添加一个面板到卡式布局面板中再添加一个面板到卡式布局面板中面板容器显示最后一个添加进行来的面板手工布局不使用布局管理器,而是直接指定各个组件的位置,即手工布局。对组件进行布局设置需要指出组件的位置和尺寸使用setLayout(null)方法把容器的布局管理设置为空。为每个组件调用setBounds(intx,inty,intwidth,intheight)方法,其中用x和y指定组件所在的位置,而用width和height指定组件的尺寸。示例4.3.7请使用手工布局向窗体中加入三个按钮。publicComponentcreateComponents(){ JPanelpane=newJPanel(); JButtonbutton1=newJButton("按钮1"); JButtonbutton2=newJButton("按钮2"); JButtonbutton3=newJButton("按钮3");

pane.setLayout(null); pane.add(button1);//加入第1个按钮

pane.add(button2);//加入第2个按钮

pane.add(button3);//加入第3个按钮

button1.setBounds(10,10,80,20); button2.setBounds(100,100,80,30); button3.setBounds(60,60,80,40); returnpane;}本节小结在Java的GUI系统设计中,通常使用布局管理器来管理组件容器中的布局,即控制容器中的组件的位置和尺寸大小。在Java的awt包中提供多种功能强大、灵活的布局管理器,这些布局管理器通过实现LayoutManager接口来提供统一的接口。常用的有:

FlowLayout、BorderLayout、GridLayout、GridBagLayout、BoxLayout、CardLayout、手工布局作业1.Java中有那些布局管理器?各有什么特点?2.找出下列各题中的错误,

温馨提示

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

评论

0/150

提交评论