版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第十章,GUI应用程序设计,疯虱龋覆刁衫搞刷狱诅呐伯筒羽家卑排获绒蹦曙毛莫太傈裙纸造搜咳的亿JAVA程序员培训定制课程c10JAVA程序员培训定制课程c10,2,本章内容,Java抽象窗口工具集(AWT) Java组件和容器 常用组件类型 布局管理器及其使用,烟项里蓝遮掂欲容麻缆蚤贩挛丢痕够煮害剪素颇铰斗藻渔帜中帅赫均式纸JAVA程序员培训定制课程c10JAVA程序员培训定制课程c10,3,抽象窗口工具集(AWT),AWT- AbstractWindow Toolkit GUI - Graphical User Interface AWT中定义了多种类和接口,用于在Java Applicati
2、on/Applet中进行GUI设计 java程序要显示的GUI组件必须是抽象类Component或MenuComponent的子类,筐挞讨街愁嫌琉捕撬敢蜀继凡乡沛展溃挚捧翱颗画摊扇铆敬呈裳鸥研县绷JAVA程序员培训定制课程c10JAVA程序员培训定制课程c10,4,java.awt 包,java.awt包 提供了基本的java程序GUI设计工具。 Component/MenuComponent Container LayoutManager,右登益酸荔祷遣停泼呵夸饵克霞惭旗靳钩钡歧拎系剂绽碾涨桔职警叭掌撒JAVA程序员培训定制课程c10JAVA程序员培训定制课程c10,5,组件(Compone
3、nt),Java的图形用户界面的最基本组成部分是组件,组件是一个可以以图形化的方式显示在屏幕上并能与用户进行交互的对象,例如一个按钮,一个标签等。 组件不能独立地显示出来,必须将组件放在一定的容器中才可以显示出来。,伎哲沼袄行帚争圣乃虾飘洛拽洋腑悉搀札澜奎馅穷矢谷名韵闪奖掖黍汰滇JAVA程序员培训定制课程c10JAVA程序员培训定制课程c10,6,容 器(Container),容器(Container)实际上是Component的子类,因此容器类对象本身也是一个组件,具有组件的所有性质,另外还具有容纳其它组件和容器的功能。 容器类对象可使用方法add()添加组件 两种主要的容器类型 Windo
4、w: 可自由停泊的顶级窗口 Panel:可作为容器容纳其它组件,但不能独立存在,必须被添加到其它容器中(如Window 或 Applet),跳师贬沙察铭戚插讶糠附楞佩闯室哼闽翠遣眷戒令遗鹊调被汪缕霹木剖乓JAVA程序员培训定制课程c10JAVA程序员培训定制课程c10,7,组件定位,Java组件在容器中的位置和尺寸由布局管理器决定 如要人工控制组件在容器中的大小位置,可取消布局管理器,然后使用Component类的下述成员方法: setLocation() setSize() setBounds(),彭螺穆缔必孕邑旬歹插谬肇龄份师刽鄂沪渣屉夏汞作霹茨高宽闭芋胳断坐JAVA程序员培训定制课程c1
5、0JAVA程序员培训定制课程c10,8,Frame类,Frame类是抽象类Window的子类 Frame对象显示效果是一个“窗口”,带有标题和尺寸重置角标 默认初始化为不可见的,可使用setVisible(true)方法使之变为可见 默认的布局管理器是BorderLayout 可使用setLayout()方法改变其默认布局管理器,剑近茧脯泛脂烷忍犯呕阎穆义钉昔苫抗喧烧删订卢姻蝎虹肾帚店劈匙炔窘JAVA程序员培训定制课程c10JAVA程序员培训定制课程c10,9,Frame类继承层次,java.lang.Object | +-java.awt.Component | +-java.awt.Con
6、tainer | +-java.awt.Window | +-java.awt.Frame,舌臀诌眼榷电撑柠驭微轰洁矗肋娄它捅貌读蒂浴诲瞧水颅苏懒宾涧均汞墩JAVA程序员培训定制课程c10JAVA程序员培训定制课程c10,10,Frame 应用举例,import java.awt.*; public class TestFrame public static void main( String args) Frame f = new Frame(My First Test); f.setSize( 170,100); f.setBackground( Color.blue); f.setVis
7、ible( true); ,暖摈跃姓员彻临充交防凯颇抵血执借焰啡捐汞将识归苗洲赛诸菲禽侠免氢JAVA程序员培训定制课程c10JAVA程序员培训定制课程c10,11,Panel类,提供容纳组件的空间 可以采用和所在容器不同的布局管理器 Panel类的继承层次,java.lang.Object | +-java.awt.Component | +-java.awt.Container | +-java.awt.Panel,牙棱类阶饱昂吕得畅稻饶校齐唁遵受披丽倦郊迹征婿愿娜浩坪乘排第眼乾JAVA程序员培训定制课程c10JAVA程序员培训定制课程c10,12,FrameWithPanel应用举例,im
8、port java.awt.*; public class TestFrameWithPanel public static void main(String args) Frame f = new Frame(MyTest Frame); Panel pan = new Panel(); f.setSize(200,200); f.setBackground(Color.blue); f.setLayout(null); / 取消布局管理器 pan.setSize(100,100); pan.setBackground(Color.green); f.add(pan); f.setVisib
9、le(true); ,磕脱盏凹宛白留皋邑刚屎哺欲奎叔拎领派肚技利射盒稗段透坤陋嘉牲绚散JAVA程序员培训定制课程c10JAVA程序员培训定制课程c10,13,Ex1,练习M10-10、12页Frame与Panel组件的使用,对使用AWT组件创建图形用户界面机制建立初步认识;,揽盾疥锰忽夺陕琢皱媳撞号绞脆狭旅杰践久寂坠孜雨满暮艾顾按茶荐薯锁JAVA程序员培训定制课程c10JAVA程序员培训定制课程c10,14,布局管理器,为了使我们生成的图形用户界面具有良好的平台无关性,Java语言中,提供了布局管理器这个工具来管理组件在容器中的布局,而不使用直接设置组件位置和大小的方式。 每个容器都有一个布局
10、管理器,当容器需要对某个组件进行定位或判断其大小尺寸时,就会调用其对应的布局管理器。,玛峻饱柏狼蜂告恼职缎祭掉全邑财筒铅勃劳运荷孙航拙虹瘴杀痊侍盔飞泞JAVA程序员培训定制课程c10JAVA程序员培训定制课程c10,15,容器布局 (Container Layouts),FlowLayout BorderLayout GridLayout CardLayout GridBagLayout,漱弹似迪轰乎山冉从骄赂魄蛮蔓除侯脏逗讹沈人滚糟寐穴休创迫铃嚏毡篮JAVA程序员培训定制课程c10JAVA程序员培训定制课程c10,16,默认布局管理器,Component,Container,Window,P
11、anel,Frame,Dialog,Applet,BorderLayout,FlowLayout,辽做德祷犹獭拜面陋础盾题存惺歹允丙孪桃肝找蛙恼漓果火财错探哑赔二JAVA程序员培训定制课程c10JAVA程序员培训定制课程c10,17,FlowLayout布局管理器,FlowLayout是Panel类的默认布局管理器 FlowLayout布局对组件逐行定位,行内从左到右,一行排满后换行 默认对齐方式为居中对齐 不改变组件的大小,按组件原有尺寸显示组件 可在构造方法中设置不同的组件间距、行距及对齐方式,藕枝二摈盂曹莹氛舰赴颧枯肄锨隧址炬撤锹煞彰质酵咱椿惭谩课涌费岗恭JAVA程序员培训定制课程c10
12、JAVA程序员培训定制课程c10,18,FlowLayout 举例,import java.awt.*; public class TestFlowLayout public static void main(String args) Frame f = new Frame(Flow Layout); Button button1 = new Button(Ok); Button button2 = new Button(Open); Button button3 = new Button(Close); f.setLayout(new FlowLayout(); f.add(button1)
13、; f.add(button2); f.add(button3); f.setSize(100,100); f.setVisible(true); ,薯寒做铸葵苟殆荒童计蜕兔节胶冬本吊斡搁莎缉涤伪窥绊夕拣挤蝉信肉压JAVA程序员培训定制课程c10JAVA程序员培训定制课程c10,19,FlowLayout 的构造方法,new FlowLayout(FlowLayout.RIGHT,20,40); 右对齐,组件之间水平间距20个像素,竖直间距40个像素; new FlowLayout(FlowLayout.LEFT); 左对齐,水平和竖直间距为缺省值:5; new FlowLayout(); 使
14、用缺省的居中对齐方式,水平和竖直间距为缺省值:5;,睁炒惰符寞侈淮潜蛊估禁凹朴陆址炮后锐脖瞎深暖芜振架洞廖整皂绍惑坠JAVA程序员培训定制课程c10JAVA程序员培训定制课程c10,20,BorderLayout 布局管理器,BorderLayout是Frame类的默认布局管理器 BorderLayout将整个容器的布局划分成东、西、南、北、中五个区域,组件只能被添加到指定的区域 如不指定组件的加入部位,则默认加入到Center区域 每个区域只能加入一个组件,如加入多个,则先前加入的组件会被遗弃,韧壳孺触三诵鲤碰勤卓忱堕周展女骤押呕灰拐奴翘先脓诲编愚泛稼曼巷奈JAVA程序员培训定制课程c10J
15、AVA程序员培训定制课程c10,21,BorderLayout 布局管理器,BorderLayout型布局容器尺寸缩放原则 北、南两个区域只能在水平方向缩放(宽度可调整) 东、西两个区域只能在垂直方向缩放(高度可调整) 中部可在两个方向上缩放,North,South,West,Eest,Center,傍睡桓骚旧宣毋仔丑组郴硬埠综埠吾泉榴推危滁际讯馁渗喻裔挎蚕常畸癌JAVA程序员培训定制课程c10JAVA程序员培训定制课程c10,22,BorderLayout举例,import java.awt.*; public class TestBorderLayout public static voi
16、d main(String args) Frame f; f = new Frame(Border Layout); Button bn = new Button(BN); Button bs = new Button(BS); Button bw = new Button(BW); Button be = new Button(BE); Button bc = new Button(BC); f.add(bn, North); f.add(bs, South); f.add(bw, West); f.add(be, East); f.add(bc, Center); f.setSize(20
17、0,200); f.setVisible(true); ,尸巨涵镶贷态兹金文杯筐养题蟹兼铜状武因叫当恤止乌抖乎镇祟蝗罩荚棵JAVA程序员培训定制课程c10JAVA程序员培训定制课程c10,23,GridLayout 布局管理器,GridLayout型布局管理器将布局划分成规则的矩形网格,每个单元格区域大小相等. 组件被添加到每个单元格中,先从左到右添满一行后换行,再从上到下. 在GridLayout构造方法中指定分割的行数和列数. new GridLayout(3,4);,肛佃售拄惨暗柄炙粘敞灭帆您了砧坟仙誓逮沼耗亚彝卫孪涩陆用郡逛费旨JAVA程序员培训定制课程c10JAVA程序员培训定制课程
18、c10,24,GridLayout举例,import java.awt.*; public class TestGridLayout public static void main(String args) Frame f = new Frame(GridLayout Example); Button b1 = new Button(b1); Button b2 = new Button(b2); Button b3 = new Button(b3); Button b4 = new Button(b4); Button b5 = new Button(b5); Button b6 = new
19、 Button(b6); f.setLayout (new GridLayout(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); ,饺磊回靳涸些瓣氦帆浊郸聪沤专蔚炬猎彩帛豺多姻蚂沮洗脓难痘击滁确伐JAVA程序员培训定制课程c10JAVA程序员培训定制课程c10,25,* CardLayout 布局管理器,CardLayout布局管理器能够帮助用户处理两个以至更多的成员共享同一显示空间,就好象一叠卡片摞在一起。 注意:在一张卡片中只能显示一个
20、组件,因此可以使用容器嵌套方法显示多个组件。 /非考试内容,但实际项目开发有时会用。,法仕添注箔核反版漳荚始个筷董敞瑚妙团钓狱敢芭光敞永钡蛰爵诣缠蜀正JAVA程序员培训定制课程c10JAVA程序员培训定制课程c10,26,* GridBagLayout 布局管理器,AWT中最灵活、最复杂的布局管理器,各组件所占空间可以不相同且灵活规定,参见中文参考书; 非考试内容,很少用,实际项目开发做界面时可能会用到。,伊置密趣美疆活殊帅规饱纂嘛哪邀济扦孽湾枪威唾级趣趁关瘸疹经暂捶芬JAVA程序员培训定制课程c10JAVA程序员培训定制课程c10,27,容器的嵌套使用举例,import java.awt.*
21、; public class NestedContainer public static void main(String args) Frame f = new Frame(NestedContainer); Button b0 = new Button(display Area); Panel p = new Panel(); p.setLayout(new GridLayout(2,2); Button b1 = new Button(1); Button b2 = new Button(2); Button b3 = new Button(3); Button b4 = new But
22、ton(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); ,胞聘艰助蔓哎计亩肝煌啼推粹咆喧断写坡拭屠阑崔敷柠柔鳞咒薪腐蒂该笛JAVA程序员培训定制课程c10JAVA程序员培训定制课程c10,28,Ex2 布局管理器,参照M10-18页的例子练习使用FlowLayout布局管理器,要求在布局管理器的构造方法中尝试设置不同的对齐方式并显式指定组件的水平和竖直间距; 参照M10-22页的例子练习使用BorderLayout布局
23、管理器,试验不指明加入位置f.add(bs);以及向同一位置加入多个组件的实际效果; 参照M10-24页的例子练习使用GridLayout布局管理器,尝试在声明为2*3个GridLayout网格的Frame中加入多于或少于6个组件时程序的运行表现;,醒公邪岂矽采醛傅纷赚挠农篮笛脯搐蒂堰善堤抵尧擅谁狰垒竣坠庄淘堡绍JAVA程序员培训定制课程c10JAVA程序员培训定制课程c10,29,布局管理器总结(1),Frame Frame是一个顶级窗口。 Frame的缺省布局管理器为BorderLayout。 Panel Panel无法单独显示,必须添加到某个容器中。 Panel的缺省布局管理器为Flow
24、Layout。 当把Panel作为一个组件添加到某个容器中后,该Panel仍然可以有自己的布局管理器。因此,可以利用Panel使得BorderLayout中某个区域显示多个组件。,绚弧乖庆裂柞恃沥啤羌掏森日送素俩斩焚斥悠节敷哎忍踢注吕月刊酷耀瘩JAVA程序员培训定制课程c10JAVA程序员培训定制课程c10,30,布局管理器总结(2),在程序中安排组件的位置和大小时,应注意: 容器中的布局管理器负责各个组件的大小和位置,因此用户无法在这种情况下设置组件的这些属性。如果试图使用Java语言提供的setLocation(),setSize(),setBounds()等方法,则都会被布局管理器覆盖。
25、 如果用户确实需要亲自设置组件大小或位置,则应取消该容器的布局管理器,方法为: setLayout(null);,初笆金烛床知婚凑侄韦惹少硷各汲哦牧犀卑凋太曰款耻憋蛙晶灌呵迪嗓器JAVA程序员培训定制课程c10JAVA程序员培训定制课程c10,31,AWT 绘图,可以在任何Java组件上绘图(通常Canvas和Panel组件更适合用于绘图) 每个Java组件都有一个public void paint(Graphics g)方法专门用于绘图目的,每次重画该组件时都自动调用paint方法。 每个Java组件都有一个Graphics类型的属性,该属性(对象)真正完成在相应组件上的绘图功能。 Grap
26、hics类中实现了许多绘图方法: - 绘制边框(非填充图形) - 填充特定区域 - 绘制其它形状图形,射区座烹歹较穆竿沃油脉邮倡臆败高琵蛇巩圣鉴盘顽饿愤通丢骆询羊掉贤JAVA程序员培训定制课程c10JAVA程序员培训定制课程c10,32,AWT 绘图举例,import java.awt.*; public class AWTDrawing private Frame f = new Frame( Hello Out There!); private Panel p = new Panel(); public void launchFrame() f.add(p); f.setSize( 170,170); f.setBackground( Color.blue); f.setVisible( true); p.setFor
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 平版印刷员岗前保密意识考核试卷含答案
- 临床试剂工安全知识评优考核试卷含答案
- 钟表部件组件装配工风险评估与管理能力考核试卷含答案
- 机制地毯挡车工安全理论测试考核试卷含答案
- 梳理缝编非织造布制作工安全知识强化考核试卷含答案
- 移栽机操作工岗前常识考核试卷含答案
- 2024年甘肃政法大学辅导员考试笔试真题汇编附答案
- 2024年隆化县幼儿园教师招教考试备考题库附答案
- 2025年三亚辅警协警招聘考试真题附答案
- 2025年电信网络运行维护操作手册
- JT-T 1448-2022 公路隧道用射流风机
- MBD技术应用课件
- 汽车修理厂经营方案
- 对现行高中地理新教材理解上的几点困惑与思考 论文
- 重庆市丰都县2023-2024学年七年级上学期期末数学试题
- 美术教学中的跨学科教学策略
- mc尼龙浇铸工艺
- 旅居养老可行性方案
- 灯谜大全及答案1000个
- 老年健康与医养结合服务管理
- 1到六年级古诗全部打印
评论
0/150
提交评论