Java2实用教程课件(第3版第7章)_第1页
Java2实用教程课件(第3版第7章)_第2页
Java2实用教程课件(第3版第7章)_第3页
Java2实用教程课件(第3版第7章)_第4页
Java2实用教程课件(第3版第7章)_第5页
已阅读5页,还剩39页未读 继续免费阅读

下载本文档

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

文档简介

1、java 2java 2实用教程(第版)教学课件实用教程(第版)教学课件课件制作 彭其华四川理工学院2008年秋第章第章awt组件及事件处理组件及事件处理 l7.1java窗口窗口l7.2文本框文本框l7.3内部类实例做监视器内部类实例做监视器l7.4按钮与标签按钮与标签l7.5菜单项菜单项l7.6文本区文本区l7.7面板面板l7.8布局布局l7.9画布画布l7.10 选择型组件选择型组件l7.11 component类的常用方法类的常用方法l7.12 窗口事件窗口事件l7.13 鼠标事件鼠标事件l7.14 焦点事件焦点事件l7.15 键盘事件键盘事件l7.16 使用剪贴板使用剪贴板l7.17

2、 打印打印l7.18 综合实例综合实例 图形用户界面图形用户界面l通过图形用户界面(gui:graphics user interface),用户和程序之间可以方便地进行交互。java的抽象窗口工具包(awt:abstract window toolkit)中包含了许多类来支持gui设计。awt由java的java.awt包提供,该包中有许多用来设计gui的组件类,如:按钮、菜单、列表、文本框等组件类,同时它还包含窗口、面板等容器类。容器类容器类(container)和组件类和组件类(component) ljava.awt包中一部分类的层次关系如图所示 7.1 java窗口窗口lframe类

3、是container类的间接子类。当需要一个窗口时,可使用frame或其子类创建一个对象。窗口也是一个容器,可以向窗口添加组件。需要注意的是,窗口默认地被系统添加到显示器屏幕上,因此,不允许将一个窗口添加到另一个容器中。 1. frame常用方法l1frame() 该构造方法可以创建一个无标题的窗口,窗口的默认布局为borderlayout布局。l2frame(string s) 该构造方法可以创建一个标题为s的窗口,窗口的默认布局为borderlayout布局。l3public void setbounds(int a,int b,int width,int height) 窗口调用该方法可

4、以设置出现在屏幕上时的初始位置是(a,b),即距屏幕左面a个像素、距屏幕上方b个像素;窗口的宽是width,高是height。l4public void setsize(int width,int height) 设置窗口的大小,窗口在屏幕出现是默认位置是(0,0)。l5public void setvisible(boolean b) 设置窗口是可见还是不可见,窗口默认是不可见的。l6public void setresizable(boolean b) 设置窗口是否可调整大小,窗口默认是可调整大小的。2.菜单条、菜单、菜单项菜单条、菜单、菜单项 ljava.awt包中的menubar类是负

5、责创建菜单条的,即menubar的一个实例就是一个菜单条。frame类有一个将菜单条放置到窗口中的方法:setmenubar(menubar bar);ljava.awt包中的menu类是负责创建菜单的,即menu的一个实例就是一个菜单 ljava.awt包的munuitem类负责创建菜单项,即menuitem的一个实例就是一个菜单项 7.3 文本框文本框ljava.awt包中的类textfield类创建文本框l用户可以在文本框输入单行的文本 .textfield类的主要方法类的主要方法 ltextfield(int x) 如果使用这个构造方法创建文本框对象,文本框中的可见字符序列的长度为 x

6、个机器字符长。文本框是可编辑的,用户可以在文本框中输入若干个字符。ltextfield(string s ) 如果使用这个构造方法创建文本框对象,则文本框的初始字符串为s。文本框是可编辑的,可以在文本框中输入若干个字符。lpublic void settext(string s) 文本框对象调用该方法可以设置文本框中的文本为参数s指定的文本,文本框中先前的文本将被清除。lpublic string gettext() 文本框对象调用该方法可以获取文本框中的文本。lpublic void addactionlistener(actionlistener l) 文本框对象调用该方法可以向文本框增加

7、动作监视器(将监视器注册到文本框)。2.文本框上的文本框上的actionevent事件事件 l学习组件除了了解组件的属性和功能外,一个更重要的方面是学习怎样处理组件上发生的界面事件。 l在学习处理事件时,必须很好地掌握事件源、监视器、处理事件的接口这三个概念。 l通过处理文本框这个具体的组件上的事件,来掌握处理事件的基本原理。 java的事件处理模式的事件处理模式l事件源能够产生事件的对象都可以成为事件源,如文本框、按钮、下拉式列表等。也就是说,事件源必须是一个对象,而且这个对象必须是java认为能够发生事件的对象。l监视器需要一个对象对事件源进行监视,以便对发生的事件作出处理。事件源通过调用

8、相应的方法将某个对象作为自己的监视器。例如,对于文本框,这个方法是:addactionlistener(监视器);创建该监视器对象的类必须声明实现相应的接口创建该监视器对象的类必须声明实现相应的接口 l处理事件的接口在文本框获得输入焦点之后,如果用户按回键,java运行系统就自动用actionevent类创建了一个对象,即发生了actionevent事件 当事件源发生事件时,监视器就自动调用执行被类实现的某个接口方法 处理事件示意图处理事件示意图 7.4按钮与标签按钮与标签l标签的功能是只显示文本,不能动态地编辑文本。lalel类的实例就是一个标签.ljava.awt包中的button类是专门

9、用来建立按钮的。即button类创建的一个对象就是一个按钮。l按钮可以发生actionevent事件,当按钮获得监视器之后,用鼠标单击按钮,就发生actioneven事件. 7.5菜单项菜单项l单击某个菜单项可以发生actionevent事件,因此,我们可以通过处理actionevent事件实现我们想要进行的操作。 l可以使用menushotcut类为菜单项设置快捷键,该类的一个构造方法是: menushotcut (int key); 其中key可以取值:keyevent.vk_a keyevent.vk_z; l菜单项使用setshortcut(menushortcut k)方法来设置快捷

10、键。 7.6文本区文本区ljava.awt包中的类textarea类是专门用来建立文本区的,即textarea创建的一个对象称做一个文本区。用户可以在文本区输入多行的文本。 1. textarea类主要方法类主要方法 ltextarea(int x,int y) 使用这个构造方法创建文本区对象,文本框可见行数和列数数分别为x和y。文本区有水平和垂直滚动条。lpublic void settext(string s) 文本区对象调用该方法可以将文本区中的文本设置为参数s指定的文本,文本区中先前的文本将被清除。lpublic string gettext() 文本区对象调用该方法可以获取文本区中的

11、文本。lpublic void append(string s) 文本区对象调用该方法可以在文本区中尾加文本 .laddtextlistener(textlistener) 文本区对象调用该方法可以向文本框增加文本监视器。.文本区上的文本区上的textevent事件事件 l对于文本区事件源,可以发生textevent事件。当文本区获得监视器之后,在文本区域中改变文本的内容,如键入字符、删除字符时,textevent类将自动创建一个事件对象。l发生textevent事件的事件源获得监视器的方法是addtextlistener(监视器);, 由于文本区可以发生textevent事件,所以texta

12、rea类提供了addtextlistener方法。l处理发生textevent 事件的接口是textlistener,该接口中只有一个的方法: textvaluechanged (textevent e)l创建文本区监视器的类必须要实现textlistener接口。当文本区发生textevent事件时,监视器将自动调用方法: textvaluechanged (textevent e) 对发生的事件作出处理。 7.7面板面板ljava.awt包的panel类是container(容器)的子类,因此panel类及其子类的实例也是一个容器,panel型容器的默认布局是flowlayout型布局。p

13、anel类创建的对象称做面板,我们经常在一个面板里添加若干个组件后,再把面板放到另一个容器里。ljava.awt包中的scrollpane类也是container类的子类,因此该类创建的对象也是一个容器,称为滚动面板。我们可以把一个组件放到一个滚动面板中,然后通过滚动条来观察这个组件。与panel创建的容器所不同的是,scrollpane带有滚动条,而且只能向滚动面板添加一个组件。 7.8布局布局l当把组件添加到容器中时,希望控制组件在容器中的位置,这就需要学习布局设计的知识。我们将分别介绍java.awt包中的flowlayout、borderlayout、cardlayout、gridla

14、yout布局类和java.swing.border包中的boxlayout布局类。l容器可以使用方法: setlayout(布局对象); 来设置自己的布局。1. flowlayout布局布局 lflowlayout类创建的对象称做flowlayout型布局。flowlayout型布局是panel型容器的默认布局,即panel及其子类创建的容器对象,如果不专门为其指定布局,则它们的布局就是flowlayout型布局。l如果一个容器使用这个flowlayout型布局,组件按照加入的先后顺序从左向右排列,一行排满之后就转到下一行继续从左至右排列 . 2. borderlayout布局布局 lbord

15、erlayout 布局是window型容器的默认布局,例如frame、dialog都是window类的子类,它们的默认布局都是borderlayout 布局。 l如果一个容器使用这种布局,那么容器空间简单地划分为东、西、南、北、中五个区域,中间的区域最大。3. cardlayout 布局布局 l使用cardlayout 的容器可以容纳多个组件,但是实际上同一时刻容器只能从这些组件中选出一个来显示,就像一叠“扑克牌”每次只能显示最上面一张一样,这个被显示的组件将占据所有的容器空间,依次排序。 4. gridlayout布局布局 lgridlayout的布局策略是把容器划分成若干行乘若干列的网格区

16、域,组件就位于这些划分出来的小格中。gridlayout比较灵活,划分多少网格由程序自由控制,而且组件定位也比较精确l由于gridlayout布局中每个网格都是相同大小并且强制组件与网格的大小相同,使得容器中的每个组件也都是相同的大小,显得很不自然。为了克服这个缺点,你可以使用容器嵌套。 . boxlayout布局布局 l盒式布局的容器将组件排列在一行或一列,这取决于创建盒式布局对象时,是否指定了是行排列还是列排列。 l使用行(列)型盒式布局的容器将组件排列在一行(列),组件按加入的先后顺序从左(上)向右(下)排列,容器的两端是剩余的空间。和flowlayou布局不同的是,使用行型盒式布局的容

17、器只有一行(列),即使组件再多,也不会延伸到下一行(列),这些组件可能会被缩小大小,紧缩在这一行(列)中。7.9画布画布 ljava.awt包中的类canvas负责创建画布对象。创建画布对象的常用办法是用canvas的子类来创建画布对象,并在子类中重写父类的public void paint(graphics g)方法。该方法是component类的一个方法,可以在其子类中重写这个方法,当重写这个方法时,参数g是自动实例化的,这样我们就可以在子类中使用 g调用相应方法,比如画串、画图形、图像等 .7.5选择型组件选择型组件l选择框选择框 选择框提供两种状态,一种是选中,另一种是未选中。java

18、.awt包中的checkbox用来建立选择框,即checkbox创建的一个对象就是一个选择框。l选择框可以发生itemevent事件,发生itemevent事件的事件源获得监视器的方法是:additemlistener(监视器) .l创建监视器的类必须实现itemlistener接口,该接口中只有一个的方法。当在选择框发生itemevent事件时,监视器将自动调用接口方法: temstatechanged(itemevent e) 对发生的事件作出处理。 l下拉列表下拉列表 choice创建的一个对象称作一个下拉列表组件,它是用户十分熟悉的一个组件。用户可以在下拉列表看到第一个选项和它旁边的箭

19、头按钮,当用户单击箭头按钮时,选项列表打开。 l下拉式列表可以发生itemevent事件。当下拉式列表获得监视器之后,用户在下拉列表选项列表中选中某个选项时就发生itemevent事件. l滚动列表滚动列表 java.awt包中的类list类建立滚动列表 .l滚动列表和下拉列表的另一不同之处是,滚动列表除了可以发生itemevent事件外,还可以发生actionevent事件。当用鼠标单击滚动列表的某个选项后,发生itemevent事件;当用鼠标双击某个选项后,发生actionevent事件。 7.11 component类的常用方法类的常用方法lcomponent类是所有组件的父类,这一节介

20、绍component类的常用方法 1.组件的颜色组件的颜色 lpublic void setbackground(color c) 设置组件的背景色。lpublic void setforeground(color c) 设置组件的前景色。lpublic color getbackground() 获取组件的背景色。lpublic color getforeground() 获取组件的前景色。 2组件的字体组件的字体lpublic void setfont(font f) 组件调用该方法设置组件上的字体。例如,文本组件调用该方法可以设置文本组件中的字体。lpublic font getfont

21、() 组件调用该方法获取组件上的字体。3组件的大小与位置组件的大小与位置lpublic void setsize(int width,int height) 组件调用该方法设置组件的大小,参数width指定组件的宽度,height指定组件的高度。lpublic void setlocation(int x,int y) 组件调用该方法设置组件在容器中的位置,包含该组件的容器都有默认的坐标系,容器的坐标系的左上角的坐标是(0,0),参数x,y指定该组件的左上角在容器的坐标系中的坐标,即组件距容器的左边界 x个像素,距容器的上边界 y 个像素。lpublic dimension getsize()

22、 组件调用该方法返回一个dimension对象的引用,该对像实体中含有名字是width 和height的成员变量,方法返回的dimension 对象的width的值就是组件的宽度、height的值就是当前组件的高度。lpublic point getlocation() 组件调用该方法返回一个point对象的引用,该对像实体中含有名字是x 和y的成员变量,方法返回的point对象的x,y的值就是组件的左上角在容器的坐标系中的x坐标和y坐标。lpublic void setbounds(int x,int y,int width,int height) 组件调用该方法设置组件在容器中的位置和组件

23、的大小。该方法相当于setsize方法和setlocation方法的组合。lpublic rectangle getbounds() 组件调用该方法返回一个rectangle对象的引用,该对象实体中含有名字是x、y、width 和height的成员变量,方法返回的rectangle对象的x,y的值就是组件的左上角在容器的坐标系中的x坐标和y坐标,width和height的值就是当前组件的宽度和高度。4组件的激活与可见性组件的激活与可见性lpublic void setenabled(boolean b) 组件调用该方法可以设置组件是否可被激活,当参数b取值true时,组件可以被激活,当参数b取

24、值false 时,组件不可激活。默认情况下,组件是可以被激活的。lpublic void setvisible(boolean) 设置组件在该容器中的可见性,当参数b取值true时,组件在容器中可见,当参数b取值false 时,组件在容器中不可见。除了window型组件外,其它类型组件默认是可见的。5组件上的光标组件上的光标lpublic void setcursor(cursor c) 设置鼠标指向组件时的光标形状。 l可以使用 cursor类的类方法直接获得一个光标对象,例如:cursor c=cursor.getpredefinedcursor(cursor.hand_cursor);6

25、paint方法与方法与repaint方法方法l调用repaint()方法时,repaint()方法会再去调用update(graphics g)方法。update(graphics g)方法也是component类中的一个方法,这个方法的功能是:清除paint()方法以前所画的内容,然后再调用paint方法。因此我们可以在子类中重写update方法(即隐藏父类的方法),根据需要来清除哪些部分或保留哪些部分。7.12窗口事件窗口事件lframe是window的子类,凡是 window子类创建的对象都可以发生windowevent类型事件,即窗口事件。l当一个frame窗口被激活、撤消激活、打开、

26、关闭、图标化或撤消图标化时,就引发了窗口事件,即windowevent创建一个窗口事件对象。windowevent创建的事件对象调用getwindow()方法可以获取发生窗口事件的窗口。窗口使用addwindowlistener方法获得监视器,创建监视器对象的类必须实现windowlistener接口,该接口中有7个不同的方法 . windowlistener接口中的方接口中的方法法lpublic void windowactivated(windowevent e) 当窗口从非激活状态到激活时,窗口的监视器调用该方法。lpublic void windowdeactivated(window

27、event e) 当窗口激活状态到非激活状态时,窗口的监视器调用该方法。lpublic void windowclosing(windowevent e) 当窗口正在被关闭时,窗口的监视器调用该方法。lpublic void windowclosed(windowevent e) 当窗口关闭后,窗口的监视器调用该方法。lpublic void windowiconified(windowevent e) 当窗口图标化时,窗口的监视器调用该方法。lpublic void windowdeiconified(windowevent e) 当窗口撤消图标化时,窗口的监视器调用该方法。lpublic

28、void windowopened(windowevent e) 当窗口打开时,窗口的监视器调用该方法。2. windowadapter适配器适配器 l适配器可以代替接口来处理事件,当java提供处理事件的接口中多于一个方法时,java相应地就提供一个适配器类,比如windowadapter类。适配器已经实现了相应的接口,例如windowadapter类实现了windowlistener接口。因此,可以使用windowadapte的子类创建的对象做监视器,在子类中重写所需要的接口方法即可 7.13鼠标事件鼠标事件 l任何组件上都可以发生鼠标事件,如:鼠标进入组件、退出组件、在组件上方单击鼠标、

29、拖动鼠标等都触发组件发生鼠标事件,也就是说,组件可以成为发生鼠标事件的事件源。1.mouselistener接口接口 l使用mouselistener接口可以处理5种操作触发的鼠标事件:(1)在事件源上按下鼠标键。(2)在事件源上释放鼠标键。(3)在事件源上击鼠标键。(4)鼠标进入事件源。(5)鼠标退出事件源。l鼠标事件的类型是mouseevent,即当发生鼠标事件时,mouseevent类自动创建一个事件对象。 mouselistener接口中的方法接口中的方法 l(1)mousepressed(mouseevent) 负责处理在组件上按下鼠标触发的鼠标事件,当在组件上按下鼠标时,监视器将自

30、动调用接口中的这个方法对事件作出处理。l(2)mousereleased(mouseevent) 负责处理在组件上释放鼠标触发的鼠标事件,当在组件上释放鼠标时,监视器将自动调用接口中的这个方法对事件作出处理。l(3)mouseentered(mouseevent) 负责处理鼠进入组件触发的鼠标事件,当鼠标进入组件上方时,监视器将自动调用接口中的这个方法对事件作出处理。l(4)mouseexited(mouseevent) 负责处理鼠标离开组件触发的鼠标事件,当鼠标离开组件时,监视器自动调用接口中的这个方法对事件作出处理。l(5)mouseclicked(mouseevent) 负责处理在组件上单击或连击鼠标触发的鼠标事件,当单击或连击鼠

温馨提示

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

最新文档

评论

0/150

提交评论