ImageVerifierCode 换一换
格式:PPT , 页数:90 ,大小:1MB ,
资源ID:12884397      下载积分:18 金币
快捷注册下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/12884397.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请

   平台协调中心        【在线客服】        免费申请共赢上传

权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

注意事项

本文(Java图形用户界面.ppt)为本站上传会员【精****】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

Java图形用户界面.ppt

1、单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,二级,三级,四级,五级,*,Java,图形用户界面,Java,界面设计的用途,Java 的图形界面工具包,可以用于工具类软件开发、管理类软件开发、通用客户端开发、银行客户端软件开发、Eclipse 插件开发等方向。在许多知名的大型软件中,都能够见到 Java 的身影,如思维导图软件、Eclipse、IDEA 开发环境等。,2,AWT简介,Abstract Window

2、s Toolkit(AWT)是最原始的 Java GUI 工具包。它是一个非常简单的具有有限 GUI 组件、布局管理器和事件的工具包(如窗体、文本标签、按钮、菜单等)。,3,Swing简介,Swing 是 Sun 开发的一个经过仔细设计的、灵活而强大的 GUI 工具包。Swing 是在 AWT 组件基础上构建的。Swing 使用了 AWT 的事件模型和支持类,例如 Colors、Images 和 Graphics。Swing 组件、布局管理器以及事件比 AWT 提供的组件集更为广泛,完全满足各种开发需求。,4,SWT简介,SWT,也是基于一个对等体实现的,在这一点上它与,AWT,非常类似。基于

3、SWT,的,GUI,既具有主机外观,又具有主机的性能。这样就避免了使用,AWT,和,Swing,而引起的大部分问题。,SWT,是,IBM,为它的,Eclipse,集成开发环境而开发的图形用户界面工具。,SWT,可以在,Eclipse,环境外使用,而且提供对操作系统本地图形用户界面的直接访问。因此,基于,SWT,的,Java,应用程序拥有本地的图形用户界面并且可以和本地别的应用程序和部件集成在一起。,5,如何选择 GUI 工具包,AWT、Swing、SWT是 Java 中的三大 GUI 工具包,其中 Swing 是最灵活、强大的 GUI 工具包,所以在界面开发中,首选 Swing,它可以胜任绝

4、大多数开发工作。,6,本讲内容,1,、,AWT,事件处理模型,2,、布局管理器,3,、,Swing,简介,4,、,Swing,组件和容器,7,用,AWT,生成图形化用户界面,抽象窗口工具包,AWT(Abstract Window Toolkit),是,API,为,Java,程序提供的建立图形用户界面,GUI(Graphics User Interface),工具集,,AWT,可用于,Java,的,applet,和,applications,中。它支持图形用户界面编程的功能包括:用户界面组件;事件处理模型;图形和图像工具,包括形状、颜色和字体类;布局管理器,可以进行灵活的窗口布局而与特定窗口的尺

5、寸和屏幕分辨率无关;数据传送类,可以通过本地平台的剪贴板来进行剪切和粘贴。,8,1,用,AWT,生成图形化用户界面,java.awt,包中包含了一个完整的类集以支持,GUI,程序的设计(重量级构件),事件类,字体类,Graphics,Component,颜色类,布局管理类,java.lang.Object,Checkbox,Container,Button,Window,Panel,Applet,Dialog,Frame,List,图象类,菜单类,9,1.1 java.awt,包,java.awt,包中提供了,GUI,设计所使用的类和接口。,java.awt,包提供了基本的,java,程序的,

6、GUI,设计工具。主要包括下述三个概念:,组件,Component,容器,Container,布局管理器,-LayoutManager,10,1.2,组件和容器,Java,的图形用户界面的最基本组成部分是组件(,Component,),组件是一个可以以图形化的方式显示在屏幕上并能与用户进行交互的对象,例如一个按钮,一个标签等。组件不能独立地显示出来,必须将组件放在一定的容器中才可以显示出来。,类,java.awt.Component,是许多组件类的父类,,Component,类中封装了组件通用的方法和属性,如图形的组件对象、大小、显示位置、前景色和背景色、边界、可见性等,因此许多组件类也就继承

7、了,Component,类的成员方法和成员变量,相应的成员方法包括:,getComponentAt(int x,int y)getFont(),getForeground()getName()getSize()paint(Graphics g)repaint()update()setVisible(boolean b)setSize(Dimension d)setName(String name),等,11,1.2,组件和容器,容器,(Container),也是一个类,实际上是,Component,的子类,因此容器本身也是一个组件,具有组件的所有性质,但是它的主要功能是容纳其它组件和容器。,布

8、局管理器(,LayoutManager,):每个容器都有一个布局管理器,当容器需要对某个组件进行定位或判断其大小尺寸时,就会调用其对应的布局管理器。,为了使我们生成的图形用户界面具有良好的平台无关性,,Java,语言中,提供了布局管理器这个工具来管理组件在容器中的布局,而不使用直接设置组件位置和大小的方式。,12,1.2,组件和容器,在程序中安排组件的位置和大小时,应该注意以下两点:,1,容器中的布局管理器负责各个组件的大小和位置,因此用户无法在这种情况下设置组件的这些属性。如果试图使用,Java,语言提供的,setLocation(),,,setSize(),,,setBounds(),等方

9、法,则都会被布局管理器覆盖。,2,如果用户确实需要亲自设置组件大小或位置,则应取消该容器的布局管理器,方法为:,setLayout(null),;,13,1.3,常用容器,容器,java.awt.Container,是,Component,的子类,一个容器可以容纳多个组件,并使它们成为一个整体。容器可以简化图形化界面的设计,以整体结构来布置界面。所有的容器都可以通过,add(),方法向容器中添加组件。有三种类型的容器:,Window,、,Panel,、,ScrollPane,,常用的有,Panel,Frame,Applet,。,14,1.3,常用容器,-Frame,1,Frame,例:,imp

10、ort java.awt.*;public class MyFrame extends Framepublic static void main(String args),MyFrame fr=new MyFrame(Hello Out There!);/,构造方法,fr.setSize(200,200);/,设置,Frame,的大小,缺省为(,0,,,0,),fr.setBackground(Color.red);/,设置,Frame,的背景,缺省为红色,fr.setVisible(true);/,设置,Frame,为可见,缺省为不可见,public MyFrame(String str),

11、super(str);/,调用父类的构造方法,15,1.3,常用容器,-Frame,一般我们要生成一个窗口,通常是用,Window,的子类,Frame,来进行实例化,而不是直接用到,Window,类。,Frame,的外观就像我们平常在,windows,系统下见到的窗口,有标题、边框、菜单、大小等等。每个,Frame,的对象实例化以后,都是没有大小和不可见的,因此必须调用,setSize(),来设置大小,调用,setVisible(true),来设置该窗口为可见的。,另外,,AWT,在实际的运行过程中是调用所在平台的图形系统,因此同样一段,AWT,程序在不同的操作系统平台下运行所看到的图形系统是

12、不一样的。例如在,windows,下运行,则显示的窗口是,windows,风格的窗口;而在,UNIX,下运行时,则显示的是,UNIX,风格的窗口。,16,1.3,常用容器,2,Panel,Panel,与,Frame,类似,可以添加到,Frame,中。,17,1.4 LayoutManager,布局管理器,Java,为了实现跨平台的特性并且获得动态的布局效果,,Java,将容器内的所有组件安排给一个,布局管理器,负责管理,如:排列顺序,组件的大小、位置,当窗口移动或调整大小后组件如何变化等功能授权给对应的容器布局管理器来管理,不同的布局管理器使用不同算法和策略,容器可以通过选择不同的布局管理器来

13、决定布局。,布局管理器主要包括:,FlowLayout,,,BorderLayout,,,GridLayout,,,CardLayout,,,GridBagLayout,:,18,1.4,布局管理器,-FlowLayout,1.FlowLayout,FlowLayout,是,Panel,,,Applet,的缺省布局管理器。其组件的放置规律是从上到下、从左到右进行放置,如果容器足够宽,第一个组件先添加到容器中第一行的最左边,后续的组件依次添加到上一个组件的右边,如果当前行已放置不下该组件,则放置到下一行的最左边。,当容器的大小发生变化时,用,FlowLayout,管理的组件会发生变化,其变化规律

14、是:组件的大小不变,但是相对位置会发生变化。例如上图中有三个按钮都处于同一行,但是如果把该窗口变窄,窄到刚好能够放下一个按钮,则第二个按钮将折到第二行,第三个按钮将折到第三行。按钮,Open,本来在按钮,OK,的右边,但是现在跑到了下面,所以说,组件的大小不变,但是相对位置会发生变化,。,19,1.4,布局管理器,-FlowLayout,构造方法主要下面几种:,FlowLayout(FlowLayout.RIGHT,20,40);,/*,第一个参数表示组件的对齐方式,指组件在这一行中的位置是居中对齐、居右对齐还是居左对齐,第二个参数是组件之间的横向间隔,第三个参数是组件之间的纵向间隔,单位是象

15、素。*,/,FlowLayout(FlowLayout.LEFT);,/,居左对齐,横向间隔和纵向间隔都是缺省值,5,个象素,FlowLayout();/,缺省的对齐方式居中对齐,横向间隔和纵向间隔都是缺省值,5,个象素,例:,Frame f=new Frame();f.setLayout(new FlowLayout();f.add(new Button(button1);f.add(new Button(button2);f.add(new Button(button3);,20,1.4,布局管理器,-BorderLayout,BorderLayout,是,Window,,,Frame,和

16、Dialog,的缺省布局管理器。,BorderLayout,布局管理器把容器分成,5,个区域:,North,,,South,,,East,,,West,和,Center,,每个区域只能放置一个组件。,f.setLayout(new BorderLayout();f.add(North,new Button(North);/,第一个参数表示把按钮添加到容器的,North,区域,在使用,BorderLayout,的时候,如果容器的大小发生变化,其变化规律为:组件的相对位置不变,大小发生变化。例如容器变高了,则,North,、,South,区域不变,,West,、,Center,、,East,区域

17、变高;如果容器变宽了,,West,、,East,区域不变,,North,、,Center,、,South,区域变宽。不一定所有的区域都有组件,如果四周的区域(,West,、,East,、,North,、,South,区域)没有组件,则由,Center,区域去补充,但是如果,Center,区域没有组件,则保持空白:,Center,North,South,West,East,21,1.4,布局管理器,-GridLayout,使容器中各个组件呈网格状布局,平均占据容器的空间。,Frame f=new Frame(GridLayout);f.setLayout(new GridLayout(3,2);

18、/,容器平均分成,3,行,2,列共,6,格,f.add(new Button(1);/,添加到第一行的第一格,f.add(new Button(2);/,添加到第一行的下一格,.f.add(new Button(6);/,添加到第二行的第三格,22,1.4,布局管理器,-CardLayout,CardLayout,布局管理器能够帮助用户处理两个以至更多的成员共享同一显示空间,它把容器分成许多层,每层的显示空间占据整个容器的大小,但是每层只允许放置一个组件,当然每层都可以利用,Panel,来实现复杂的用户界面。牌布局管理器(,CardLayout,)就象一副叠得整整齐齐的扑克牌一样,有,54,

19、张牌,但是你只能看见最上面的一张牌,每一张牌就相当于牌布局管理器中的每一层。,23,1.4,布局管理器,容器的嵌套,在复杂的图形用户界面设计中,为了使布局更加易于管理,具有简洁的整体风格,一个包含了多个组件的容器本身也可以作为一个组件加到另一个容器中去,容器中再添加容器,这样就形成了容器的嵌套。下面是一个容器嵌套的例子。,例:,f=new Frame(GUI example 3);,bw=new Button(West);,bc=new Button(Work space region);,f.add(bw,West);f.add(bc,Center);p=new Panel();f.add(

20、p,North);bfile=new Button(File);,bhelp=new Button(Help);p.add(bfile);p.add(bhelp);f.pack();f.setVisible(true);,24,1.4,布局管理器,小 结:,1,Frame,是一个顶级窗口。,Frame,的缺省布局管理器为,BorderLayout,。,2,Panel,无法单独显示,必须添加到某个容器中。,Panel,的缺省布局管理器为,FlowLayout,。,3,当把,Panel,作为一个组件添加到某个容器中后,该,Panel,仍然可以有自己的布局管理器。因此,可以利用,Panel,使得,B

21、orderLayout,中某个区域显示多个组件,达到设计复杂用户界面的目的。,4,如果采用无布局管理器,setLayout(null),,则必须使用,setLocation(),setSize(),setBounds(),等方法手工设置组件的大小和位置,此方法会导致平台相关,不鼓励使用。,25,2 AWT,事件处理模型,要能够让图形界面接收用户的操作,就必须给各个组件加上事件处理机制。在事件处理的过程中,主要涉及三类对象:,Event-,事件,用户对界面操作在,java,语言上的描述,以类的形式出现,例如键盘操作对应的事件类是,KeyEvent,。,Event Source-,事件源,事件发生

22、的场所,通常就是各个组件,例如按钮,Button,。,Event handler-,事件处理者,接收事件对象并对其进行处理的对象。,26,事件及处理机制,组件(事件发生者)触发一个相应类型的事,件,此事件由相应类型的,Listener,(,事件监听者,),接收并处理,Button 1,事件发生者,接收事件,e,并做处理,ActionListener,事件监听者,触发,ActionEvent e,点击,27,事件及处理机制,调用按扭的,addActionListener,(,),方法,为该按扭指定监听者。,鼠标单击按扭,ActionEvent,事件,触发,public void,actionPe

23、rformed(ActionEvent e),ActionListener,接口,ActionEvent,事件,监听者类,监听者对象,实现 接口,28,实现步骤,根据需要定义相应类型的监听者类,在类的,定义中完成事件的处理;,创建事件监听者对象;,为将会触发事件的组件,C,注册相应的事件监听,者对象(使用,C,的,addXXXListener(),方法)。,例:,ButtonAct.java,29,public class ButtonAct extends Frame,.,public ButtonAct(),.,/,为,b1,注册事件监听者,B1,b1.addActionListener(

24、new B1();,add(b1);,.,/,利用,inner class,结构定义监听者类,class B1 implements ActionListener,/,利用,actionPerformed,方法进行事件处理,public void,actionPerformed,(ActionEvent e),who.setText(Button 1);,.,/:,30,2.1,事件类,与,AWT,有关的所有事件类都由,java.awt.AWTEvent,类派生,它也是,EventObject,类的子类。,AWT,事件共有,10,类,可以归为两大类:低级事件和高级事件。,java.util.E

25、ventObject,类是所有事件对象的基础父类,所有事件都是由它派生出来的。,AWT,的相关事件继承于,java.awt.AWTEvent,类,这些,AWT,事件分为两大类:低级事件和高级事件,低级事件是指基于组件和容器的事件,当一个组件上发生事件,如:鼠标的进入,点击,拖放等,或组件的窗口开关等,触发了组件事件。高级事件是基于语义的事件,它可以不和特定的动作相关联,而依赖于触发此事件的类,如在,TextField,中按,Enter,键会触发,ActionEvent,事件,滑动滚动条会触发,AdjustmentEvent,事件,或是选中项目列表的某一条就会触发,ItemEvent,事件。,3

26、1,2.1,事件类,低级事件,ComponentEvent,(组件事件:组件尺寸的变化,移动),ContainerEvent,(容器事件:组件增加,移动),WindowEvent,(窗口事件:关闭窗口,窗口闭合,图标化),FocusEvent,(焦点事件:焦点的获得和丢失),KeyEvent,(键盘事件:键按下、释放),MouseEvent,(鼠标事件:鼠标单击,移动)高级事件(语义事件),ActionEvent,(动作事件:按钮按下,,TextField,中按,Enter,键),AdjustmentEvent,(调节事件:在滚动条上移动滑块以调节数值),ItemEvent,(项目事件:选择项

27、目,不选择,项目改变,),TextEvent,(文本事件,文本对象改变),32,2.2,事件监听器,每类事件都有对应的事件监听器,监听器是接口,根据动作来定义方法。,AWT,的组件类中提供注册和注销监听器的方法,:,注册监听器:,public void add(listener);,注销监听器:,public void remove(listener);,例如,Button,类:(查,API,),public class Button extends Component,public synchronized void addActionListener(ActionListener l);,

28、public synchronized void removeActionListener(ActionListener l);,33,2.3 AWT,事件及其相应的监听器接口,1,可以声明多个接口,接口之间用逗号隔开。,implements MouseMotionListener,MouseListener,WindowListener,;,2,可以由同一个对象监听一个事件源上发生的多种事件:,f.addMouseMotionListener(this);,f.addMouseListener(this);,f.addWindowListener(this);,则对象,f,上发生的多个事件都

29、将被同一个监听器接收和处理。,34,2.3 AWT,事件及其相应的监听器接口,3,事件处理者和事件源处在同一个类中。本例中事件源是,Frame f,,事件处理者是类,ThreeListener,,其中事件源,Frame f,是类,ThreeListener,的成员变量。在这里所有的事件侦听器方法都要在主类中声明。,public class ThreeListener implements MouseMotionListener,MouseListener,WindowListener,f=new Frame(Three listeners example);,f.addMouseMotionL

30、istener(this);/,注册监听器,MouseMotionListener,f.addMouseListener(this);/,注册监听器,MouseListener,f.addWindowListener(this);/,注册监听器,WindowListener,35,2.3 AWT,事件及其相应的监听器接口,4,可以通过事件对象获得详细资料,比如本例中就通过事件对象获得了鼠标发生时的坐标值。,public void mouseDragged(MouseEvent e),String s=Mouse dragging:X=+e.getX()+Y=+e.getY();,tf.setT

31、ext(s);,Java,语言类的层次非常分明,因而只支持单继承,为了实现多重继承的能力,,Java,用接口来实现,一个类可以实现多个接口,这种机制比多重继承具有更简单、灵活、更强的功能。在,AWT,中就经常用到声明和实现多个接口。记住无论实现了几个接口,接口中已定义的方法必须一一实现,如果对某事件不感兴趣,可以不具体实现其方法,而用空的方法体来代替。但却必须所有方法都要写上。,36,2.4,事件适配器,Java,语言为一些,Listener,接口提供了适配器,(Adapter),类。可以通过继承事件所对应的,Adapter,类,重写需要方法,无关方法不用实现。事件适配器为我们提供了一种简单的

32、实现监听器的手段,可以缩短程序代码。但是,由于,java,的单一继承机制,当需要多种监听器或此类已有父类时,就无法采用事件适配器了。,37,2.4,事件适配器,1,事件适配器,-EventAdapter,下例中采用了鼠标适配器:,import java.awt.*;,import java.awt.event.*;,public class MouseClickHandler extends MouseAdaper,public void mouseClicked(MouseEvent e)/,只实现需要的方法,java.awt.event,包中定义的事件适配器类包括以下几个:,1,Compo

33、nentAdapter(,组件适配器,),2,ContainerAdapter(,容器适配器,),3,FocusAdapter(,焦点适配器,),4,KeyAdapter(,键盘适配器,),5,MouseAdapter(,鼠标适配器,),6,MouseMotionAdapter(,鼠标运动适配器,),7,WindowAdapter(,窗口适配器,),38,2.4,事件适配器,2.,用内部类实现事件处理,内部类(,inner class,)是被定义于另一个类中的类,使用内部类的主要原因是由于:一个内部类的对象可访问外部类的成员方法和变量,包括私有的成员。实现事件监听器时,采用内部类、匿名类编程非

34、常容易实现其功能。编写事件驱动程序,内部类很方便。,注意:使用的内部类不能在静态方法,(,如,main,方法,),中调用。,39,import java.awt.*;,import java.awt.event.*,;,public class InnerClass,private Frame f;,private TextField tf;,public InnerClass(),f=new Frame(Inner classes example);,tf=new TextField(30);,public voidi launchFrame(),Label label=new Label(

35、Click and drag the mouse);,f.add(label,BorderLayout.NORTH);,f.add(tf,BorderLayout.SOUTH);,f.addMouseMotionListener(new MyMouseMotionListener();/*,参数为内部类对象*,/,f.setSize(300,200);,f.setVisible(true);,class MyMouseMotionListener extends MouseMotionAdapter/*,内部类开始*,/,public void mouseDragged(MouseEvent

36、e),String s=Mouse dragging:x=+e.getX()+Y=+e.getY();,tf.setText(s);,;,public static void main(String args),InnerClass obj=new InnerClass();,obj.launchFrame();,/,内部类结束,40,2.4,事件适配器,3,匿名类(,Anonymous Class,)当一个内部类的类声名只是在创建此类对象时用了一次,而且要产生的新类需继承于一个已有的父类或实现一个接口,才能考虑用匿名类,由于匿名类本身无名,因此它也就不存在构造方法,它需要显示地调用一个无参的

37、父类的构造方法,并且重写父类的方法。所谓的匿名就是该类连名字都没有,只是显示地调用一个无参的父类的构造方法。,f.addMouseMotionListener(new MouseMotionAdapter()/,匿名类开始,public void mouseDragged(MouseEvent e),String s=Mouse dragging:x=+e.getX()+Y=+e.getY();,tf.setText(s);,);/,匿名类结束,41,3 AWT,组件库,本节从应用的角度进一步介绍,AWT,的一些组件,目的使大家加深对,AWT,的理解,掌握如何用各种组件构造图形化用户界面,学会

38、控制组件的颜色和字体。下面是一些常用的组件的介绍:,42,3 AWT,组件库,1,按钮,(Button),按钮是最常用的一个组件,其构造方法是:,Button b=new Button(Quit);,当按钮被点击后,会产生,ActionEvent,事件,需,ActionListener,接口进行监听和处理事件。,ActionEvent,的对象调用,getActionCommand(),方法可以得到按钮的标识名,缺省按钮名为,label,。用,setActionCommand(),可以为按钮设置组件标识符。,43,3 AWT,组件库,2.,复选框,(Checkbox),复选框提供简单的,on/o

39、ff,开关,旁边显示文本标签。构造方法如下:,setLayout(new GridLayout(3,1);,add(new Checkbox(one,null,true);,add(new Checkbox(two);,add(new Checkbox(three);,复选框用,ItemListener,来监听,ItemEvent,事件,当复选框状态改变时用,getStateChange(),获取当前状态。使用,getItem(),获得被修改复选框的字符串对象。,class Handler implements ItemListener,public void itemStateChanged

40、ItemEvent ev),String state=deselected;,if(ev.getStateChange()=ItemEvent.SELECTED),state=selected,System.out.println(ev.getItem()+state);,44,3 AWT,组件库,3.,复选框组,(CheckboxGroup),使用复选框组,可以实现单选框的功能。方法如下:,setLayout(new GridLayout(3,1);,CheckboxGroup cbg=new CheckboxGroup();,add(new Checkbox(one,cbg,true);

41、add(new Checkbox(two,cbg,false);,add(new Checkbox(three,cbg,false);,45,3 AWT,组件库,4.,下拉式菜单(,Choice,),下拉式菜单每次只能选择其中的一项,它能够节省显示空间,适用于大量选项。,Choice Colorchooser=new Choice();,Colorchooser.add(Green);,Colorchooser.add(Red);,Colorchooser.add(Blue);,Choice,用,ItemListener,接口来进行监听,46,3 AWT,组件库,5.Canvas,一个应用程

42、序必须继承,Canvas,类才能获得有用的功能,比如创建一个自定义组件。如果想在画布上完成一些图形处理,则,Canvas,类中的,paint,()方法必须被重写。,Canvas,组件监听各种鼠标,键盘事件。当在,Canvas,组件中输入字符时,必须先调用,requestFocus(),方法。,47,3 AWT,组件库,6.,单行文本输入区,(TextField),只能显示一行,当回车键被按下时,会发生,ActionEvent,事件,可以通过,ActionListener,中的,actionPerformed(),方法对事件进行相应处理。可以使用,setEditable(boolean),方法设

43、置为只读属性。单行文本输入区构造方法如下:,TextField tf1,tf2,tf3,tf4:,tf1=new TextField();,tf2=new TextField(,20);/,显示区域为,20,列,tf3=new TextField(Hello!);/,按文本区域大小显示,tf4=new TextField(Hello!,30);/,初始文本为,Hello!,显示区域为,30,列,48,3 AWT,组件库,7.,文本输入区(,TextArea,),TextArea,可以显示多行多列的文本。使用,setEditable(boolean),方法,可以将其设置为只读的。在,TextAr

44、ea,中可以显示水平或垂直的滚动条。要判断文本是否输入完毕,可以在,TextArea,旁边设置一个按钮,通过按钮点击产生的,ActionEvent,对输入的文本进行处理。,8.,列表,(List),列表中提供了多个文本选项,列表支持滚动条,可以浏览多项,List lst=new List(4,false);/,两个参数分别表示显示的行数、是否允许多选,lst.add(Venus);,lst.add(Earth);,lst.add(JavaSoft);,lst.add(Mars);,cnt.add(lst);,49,3 AWT,组件库,9.,框架(,Frame,),Frame,是顶级窗口,可以显

45、示标题,重置大小。当,Frame,被关闭,将产生,WindowEvent,事件,,Frame,无法直接监听键盘输入事件。,10.,对话框(,Dialog,),它是,Window,类的子类。对话框和一般窗口的区别在于它依赖于其它窗口。对话框分为非模式(,non-modal,)和模式(,modal,)两种。,11.,文件对话框,(),当用户想打开或存储文件时,使用文件对话框进行操作。主要代码如下:,d=new(ParentFr,);,d.setVisible(true);,String();,50,3 AWT,组件库,12.,菜单(,Menu,),无法直接将菜单添加到容器的某一位置,也无法使用布局

46、管理器对其加以控制。菜单只能被添加,?quot;,菜单容器,(,MenuBar,)中。,13.MenuBar,只能被添加到,Frame,对象中,作为整个菜单树的根基。,Frame fr=new Frame(MenuBar);,MenuBar mb=new MenuBar();,fr.setMenuBar(mb);,fr.setSize(150,100);,fr.setVisible(true);,51,3 AWT,组件库,14.Menu,下拉菜单。它可以被添加到,MenuBar,中或其它,Menu,中。,Frame fr=new Frame(MenuBar);,MenuBar mb=new M

47、enuBar();,fr.setMenuBar(mb);,Menu m1=new Menu(File);,mb.add(m1);,15.MenuItem,MenuItem,是菜单树中的,叶子节点,。,MenuItem,通常被添加到一个,Menu,中。对于,MenuItem,对象可以添加,ActionListener,,使其能够完成相应的操作。,Menu m1=new Menu(File);,MenuItem mi1=new MenuItem(Save);,52,本讲小结,-AWT,用,AWT,来生成图形化用户界面时,组件和容器的概念非常重要。组件是各种各样的类,封装了图形系统的许多最小单位,例

48、如按钮、窗口等等;而容器也是组件,它的最主要的作用是装载其它组件,但是象,Panel,这样的容器也经常被当作组件添加到其它容器中,以便完成杂的界面设计。布局管理器是,java,语言与其它编程语言在图形系统方面较为显著的区别,容器中各个组件的位置是由布局管理器来决定的,共有,5,种布局管理器,每种布局管理器都有自己的放置规律。事件处理机制能够让图形界面响应用户的操作,主要涉及到事件源、事件、事件处理者等三方,事件源就是图形界面上的组件,事件就是对用户操作的描述,而事件处理者是处理事件的类。因此,对于,AWT,中所提供的各个组件,我们都需要了解该组件经常发生的事件以及处理该事件的相应的监听器接口。

49、53,4 Swing,简介,54,4.1,简介,前面我们学习了,AWT,,,AWT,是,Swing,的基础。,Swing,的产生主要原因就是,AWT,不能满足图形化用户界面发展的需要。,AWT,设计的初衷是支持开发小应用程序的简单用户界面。例如,AWT,缺少剪贴板、打印支持、键盘导航等特性,而且原来的,AWT,甚至不包括弹出式菜单或滚动窗格等基本元素。此外,AWT,还存在着严重的缺陷,人们使,AWT,适应基于继承的、具有很大伸缩性的事件模型,基于同位体的体系结构也成为其致命的弱点。随着发展的需要,,Swing,出现了,,Swing,组件几乎都是轻量组件,与重量组件相比,没有本地的对等组件,不

50、像重量组件要在它们自己的本地不透明窗体中绘制,轻量组件在它们的重量组件的窗口中绘制。,55,4.1,简介,Swing,是由,100%,纯,Java,实现的,,Swing,组件是用,Java,实现的轻量级(,light-weight,)组件,没有本地代码,不依赖操作系统的支持,这是它与,AWT,组件的最大区别。由于,AWT,组件通过与具体平台相关的对等类(,Peer,)实现,因此,Swing,比,AWT,组件具有更强的实用性。,Swing,在不同的平台上表现一致,并且有能力提供本地窗口系统不支持的其它特性。,Swing,采用了一种,MVC,的设计范式,即,模型,-,视图,-,控制,(,Model

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服