JavaGUI设计原理概述_第1页
JavaGUI设计原理概述_第2页
JavaGUI设计原理概述_第3页
JavaGUI设计原理概述_第4页
JavaGUI设计原理概述_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

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

文档简介

第十十四四课课JavaGUI设计计本课课内内容容Java抽象象窗窗口口工工具具集集(AWT)Java组件件和和容容器器常用用组组件件类类型型布局局管管理理器器及及其其使使用用抽象窗窗口工工具集集(AWT)AWT--AbstractWindowToolkitGUI--GraphicalUserInterfaceAWT中定义义了多多种类类和接接口,,用于于在JavaApplication/Applet中进行行GUI设计java程序要要显示示的GUI组件必必须是是抽象象类Component或MenuComponent的子类类java.awt包java.awt包提供了了基本本的java程序GUI设计工工具。。Component/MenuComponentContainerLayoutManager组件(Component)Java的图形形用户户界面面的最最基本本组成成部分分是组组件,,组件件是一一个可可以以以图形形化的的方式式显示示在屏屏幕上上并能能与用用户进进行交交互的的对象象,例例如一一个按按钮,,一个个标签签等。。组件不不能独独立地地显示示出来来,必必须将将组件件放在在一定定的容容器中中才可可以显显示出出来。。容器器(Container)容器(Container)实际上是是Component的子类,,因此容容器类对对象本身身也是一一个组件件,具有有组件的的所有性性质,另另外还具具有容纳纳其它组组件和容容器的功功能。容器类对对象可使使用方法法add()添加组件件两种主要要的容器器类型Window:可自由停停泊的顶顶级窗口口Panel:可作为容容器容纳纳其它组组件,但但不能独独立存在在,必须须被添加加到其它它容器中中(如Window或Applet)组件定位位Java组件在容容器中的的位置和和尺寸由由布局管管理器决决定如要人工工控制组组件在容容器中的的大小位位置,可可取消布布局管理理器,然然后使用用Component类的下述述成员方方法:setLocation()setSize()setBounds()Frame类Frame类是抽象象类Window的子类Frame对象显示示效果是是一个““窗口””,带有有标题和和尺寸重重置角标标默认初始始化为不不可见的的,可使使用setVisible(true)方法使之之变为可可见默认的布布局管理理器是BorderLayout可使用setLayout()方法改变其默默认布局管理理器Frame类继承层次java.lang.Object|+----java.awt.Component|+----java.awt.Container|+----java.awt.Window|+----java.awt.FrameFrame应用举例importjava.awt.*;publicclassTestFrame{publicstaticvoidmain(Stringargs[]){Framef=newFrame("MyFirstTest");f.setSize(170,100);f.setBackground(Color.blue);f.setVisible(true);}}Panel类提供容纳组件件的空间可以采用和所所在容器不同同的布局管理理器Panel类的继承层次次java.lang.Object|+----java.awt.Component|+----java.awt.Container|+----java.awt.PanelFrameWithPanel应用举例importjava.awt.*;publicclassTestFrameWithPanel{publicstaticvoidmain(Stringargs[]){Framef=newFrame("MyTestFrame");Panelpan=newPanel();f.setSize(200,200);f.setBackground(Color.blue);f.setLayout(null);//取消布局管理理器pan.setSize(100,100);pan.setBackground(Color.green);f.add(pan);f.setVisible(true);}}Ex1参考P10、12页程序,练习习Frame与Panel组件的使用,,对使用AWT组件创建图形形用户界面机机制建立初步步认识;布局管理器为了使我们生生成的图形用用户界面具有有良好的平台台无关性,Java语言中,提供供了布局管理理器这个工具具来管理组件件在容器中的的布局,而不不使用直接设设置组件位置置和大小的方方式。每个容器都有有一个布局管管理器,当容容器需要对某某个组件进行行定位或判断断其大小尺寸寸时,就会调调用其对应的的布局管理器器。容器布局(ContainerLayouts)FlowLayoutBorderLayoutGridLayoutCardLayoutGridBagLayout默认布局管理理器ComponentContainerWindowPanelFrameDialogAppletBorderLayoutFlowLayoutFlowLayout布局管理器FlowLayout是Panel类的默认布局局管理器FlowLayout布局对组件逐逐行定位,行行内从左到右右,一行排满满后换行默认对齐方式式为居中对齐齐不改变组件的的大小,按组组件原有尺寸寸显示组件可在构造方法法中设置不同同的组件间距距、行距及对对齐方式FlowLayout举例importjava.awt.*;publicclassTestFlowLayout{publicstaticvoidmain(Stringargs[]){Framef=newFrame("FlowLayout");Buttonbutton1=newButton("Ok");Buttonbutton2=newButton("Open");Buttonbutton3=newButton("Close");f.setLayout(newFlowLayout());f.add(button1);f.add(button2);f.add(button3);f.setSize(100,100);f.setVisible(true);}}FlowLayout的构造方法newFlowLayout(FlowLayout.RIGHT,20,40);右对齐,组件件之间水平间间距20个像像素,竖直间间距40个像像素;newFlowLayout(FlowLayout.LEFT);左对齐,水水平和竖直直间距为缺缺省值:5;newFlowLayout();使用缺省的的居中对齐齐方式,水水平和竖直直间距为缺缺省值:5;BorderLayout布局管理器器BorderLayout是Frame类的默认布布局管理器器BorderLayout将整个容器器的布局划划分成东、、西、南、、北、中五五个区域,,组件只能能被添加到到指定的区区域如不指定组组件的加入入部位,则则默认加入入到Center区域每个区域只只能加入一一个组件,,如加入多多个,则先先前加入的的组件会被被遗弃BorderLayout布局管理器器BorderLayout型布局容器器尺寸缩放放原则北、南两个个区域只能能在水平方方向缩放(宽度可调调整)东、西两个个区域只能能在垂直方方向缩放(高度可调调整)中部可在两两个方向上上缩放NorthSouthWestEestCenterBorderLayout举例importjava.awt.*;publicclassTestBorderLayout{publicstaticvoidmain(Stringargs[]){Framef;f=newFrame("BorderLayout");Buttonbn=newButton("BN");Buttonbs=newButton("BS");Buttonbw=newButton("BW");Buttonbe=newButton("BE");Buttonbc=newButton("BC");f.add(bn,"North");f.add(bs,"South");f.add(bw,"West");f.add(be,"East");f.add(bc,"Center");f.setSize(200,200);f.setVisible(true);}}GridLayout布局局管管理理器器GridLayout型布布局局管管理理器器将将布布局局划划分分成成规规则则的的矩矩形形网网格格,,每每个个单单元元格格区区域域大大小小相相等等.组件件被被添添加加到到每每个个单单元元格格中中,,先先从从左左到到右右添添满满一一行行后后换换行行,,再再从从上上到到下下.在GridLayout构造造方方法法中中指指定定分分割割的的行行数数和和列列数数.newGridLayout(3,4);GridLayout举例importjava.awt.*;publicclassTestGridLayout{publicstaticvoidmain(Stringargs[]){Framef=newFrame("GridLayoutExample");Buttonb1=newButton("b1");Buttonb2=newButton("b2");Buttonb3=newButton("b3");Buttonb4=newButton("b4");Buttonb5=newButton("b5");Buttonb6=newButton("b6");f.setLayout(newGridLayout(3,2));f.add(b1);f.add(b2);f.add(b3);f.add(b4);f.add(b5);f.add(b6);f.pack();f.setVisible(true);}}*CardLayout布局管理理器CardLayout布局管理理器能够够帮助用用户处理理两个以以至更多多的成员员共享同同一显示示空间,,就好象象一叠卡卡片摞在在一起。。注意:在在一张卡卡片中只只能显示示一个组组件,因因此可以以使用容容器嵌套套方法显显示多个个组件。。*GridBagLayout布局管理理器AWT中最灵活活、最复复杂的布布局管理理器,各各组件所所占空间间可以不不相同且且灵活规规定,参参见中文文参考书书;容器的嵌嵌套使用用举例importjava.awt.*;publicclassNestedContainer{publicstaticvoidmain(Stringargs[]){Framef=newFrame("NestedContainer");Buttonb0=newButton("displayArea");Panelp=newPanel();p.setLayout(newGridLayout(2,2));Buttonb1=newButton("1");Buttonb2=newButton("2");Buttonb3=newButton("3");Buttonb4=newButton("4");p.add(b1);p.add(b2);p.add(b3);p.add(b4);f.add(b0,"North");f.add(p,"Center");f.pack();f.setVisible(true);}}Ex2布局管管理器器参照P18页的例例子练练习使使用FlowLayout布局管管理器器,要要求在在布局局管理理器的的构造造方法法中尝尝试设设置不不同的的对齐齐方式式并显显式指指定组组件的的水平平和竖竖直间间距;;参照P22页的例例子练练习使使用BorderLayout布局管管理器器,试试验不不指明明加入入位置置f.add(bs);以及向向同一一位置置加入入多个个组件件的实实际效效果;;参照P24页的例例子练练习使使用GridLayout布局管管理器器,尝尝试在在声明明为2*3个GridLayout网格的的Frame中加入入多于于或少少于6个组组件时时程序序的运运行表表现;;布局管管理器器总结结(1)FrameFrame是一个顶级级窗口。Frame的缺省布局局管理器为为BorderLayout。。PanelPanel无法单独显显示,必须须添加到某某个容器中中。Panel的缺省布局局管理器为为FlowLayout。当把Panel作为一个组组件添加到到某个容器器中后,该该Panel仍然可以有有自己的布布局管理器器。因此,,可以利用用Panel使得BorderLayout中某个区域域显示多个个组件。布局管理器器总结(2)在程序中安安排组件的的位置和大大小时,应应注意:容器中的布布局管理器器负责各个个组件的大大小和位置置,因此用用户无法在在这种情况况下设置组组件的这些些属性。如如果试图使使用Java语言提供的的setLocation(),setSize(),setBounds()等方法,则则都会被布布局管理器器覆盖。如果用户确确实需要亲亲自设置组组件大小或或位置,则则应取消该该容器的布布局管理器器,方法为为:setLayout(null);AWT绘图可以在任何何Java组件上绘图图(通常Canvas和Panel组件更适合合用于绘图图)每个Java组件都有有一个publicvoidpaint(Graphicsg)方法专门门用于绘绘图目的的,每次次重画该该组件时时都自动动调用paint方法。每个Java组件都有有一个Graphics类型的属属性,该该属性((对象))真正完完成在相相应组件件上的绘绘图功能能。Graphics类中实现现了许多多绘图方方法:--绘绘制边边框(非非填充图图形)--填填充特特定区域域--绘绘制其其它形状状图形AWT绘图举例例importjava.awt.*;publicclassAWTDrawing{privateFramef=newFrame("HelloOutThere!");privatePanelp=newPanel();publicvoidlaunchFrame(){f.add(p);f.setSize(170,170);f.setBackground(Color.blue);f.setVisible(

温馨提示

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

评论

0/150

提交评论