Java语言程序的设计实用程第十三讲图形用户界面_第1页
Java语言程序的设计实用程第十三讲图形用户界面_第2页
Java语言程序的设计实用程第十三讲图形用户界面_第3页
Java语言程序的设计实用程第十三讲图形用户界面_第4页
Java语言程序的设计实用程第十三讲图形用户界面_第5页
已阅读5页,还剩65页未读 继续免费阅读

下载本文档

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

文档简介

1、sisejava语言程序设计实用教程java语言程序设计实用教程sisejava语言程序设计实用教程第13讲 图形用户界面sisejava语言程序设计实用教程3本章学习要点:l识别用户界面屏幕的组件以及主要的类l理解布局管理器,在用户接口上组织组件l理解事件监听器,理解委派事件模型l掌握java图形用户界面开发方法sisejava语言程序设计实用教程13.1 图形用户界面组件sisejava语言程序设计实用教程图形用户界面gui (见p349图13-1) l至今为止所编写的java程序只能从键盘输入,在控制台屏幕上显示结果。l图形用户界面(gui,graphical user interfac

2、e)是为应用程序提供一个图形化的界面,程序通过gui与用户交互,gui能使一个应用程序具有与众不同的“外观”与“感觉”,是目前应用程序大多数是采用的方式。 winui:标准的ms windows或x-windows的应用系统,应用使用来自操作系统的gui元素和其它加入的元素webui:web应用系统,基于浏览器操作sisejava语言程序设计实用教程java程序图形界面的坐标设置程序图形界面的坐标设置原点(0,0)x轴y轴sisejava语言程序设计实用教程用户图形接口awtl awt(abstract window toolkit)是一个独立平台的窗口工具组件集,它依赖于对等组件(peer)

3、,而对等组件是一个本地本地gui组件组件,由awt类管理。awt的作用是给用户提供基本的界面组件,如按钮、列表框、菜单等。l awt最初只包括与本地对等组件相关联的组件,称为称为重量组件(重量组件(heavyweight component),这些组件在它们自己的本地不透明窗口中绘制,用awt创建的应用外观在不同的操作系统平台上是不同外观在不同的操作系统平台上是不同。 sisejava语言程序设计实用教程用户图形接口swingl java基类(java foundation classes,jfc)是关于gui组件和服务的完整集合,主要由5个api构成:awt、swing、java 2d、dr

4、ag and drop、accessibilityl swing是建立在awt基础之上的,它利用了awt的底层组件,包括图形、颜色、字体、工具包和布局管理器等。使用使用awt最好的部分来建立一个新的最好的部分来建立一个新的轻量组件集,而丢弃了轻量组件集,而丢弃了awt中有问题的重量组件中有问题的重量组件部分部分。 l 通过引入新特性和丰富的功能,swing提供了比提供了比awt更全面的组件集合。更全面的组件集合。swing api是围绕实现awt各个部分的api构建的,这保证了所有早期的awt组件仍然可以使用。sisejava语言程序设计实用教程jfc的两个特性l javax.swing.pl

5、af:提供一个接口和许多抽象类,swing 用它们来提供自己的可插入外观功能可插入外观功能。例如可用提供本地操作系统的外观,在windows上执行应用,看上去像是专为windows环境定制,其它linux、unix也类似。 l 拖拽与放置拖拽与放置(drag-and-drop):把数据从源 转变到目标。源和目标可以是两个不同应用的控件,还可在剪贴板之间来回传递数据。java.awt.dnd和java.awt.datatransfer包可用于拖拽与放置操作sisejava语言程序设计实用教程基本概念 l组件组件(component):可视化控件,例如文本框、复选框、列表框、按钮等称为组件,是是

6、java的图形用户的图形用户界面的最基本组成部分界面的最基本组成部分,组件不能独立地显示出来,必须将组件放在一定的容器中才可以显示出来l容器容器(container):容器是一种特殊的组件,一种能够容纳其他组件或容器的组件。每个组件继承它的父容器的性质,如字体、颜色容器控制存放在其中的组件的位置l布局管理器布局管理器(layout manager):为了使图形用户界面具有良好的平台无关性,提供了专门用来管理组件在容器中的布局的工具。sisejava语言程序设计实用教程java常用控件介绍textbox文本框,接收单行字符串输入textarea文本区,接收多行字符串的输入push button按

7、钮,触发一系列动作label标题,在容器上显示静态文本check box复选框,接收yes/no值的数据,可多选radio button单选按钮,只允许从一组选项中选择一个combo box下拉列表框,只允许单选,可输入新值list box列表框,允许多选,不可输入新值sisejava语言程序设计实用教程swing组件组件基本控制基本控制buttonslistmenuslidertext fieldscombo boxsisejava语言程序设计实用教程swing组件组件信息显示信息显示labelprogress bartool tipsisejava语言程序设计实用教程swing组件组件可编

8、辑格式化信息显示可编辑格式化信息显示color choosertablefile choosertexttreesisejava语言程序设计实用教程swing程序举例程序举例import javax.swing.*; public class helloworldswing public static void main(string args) jframe frame = new jframe(helloworldswing); final jlabel label = new jlabel(hello world); frame.getcontentpane().add(label);

9、frame.addwindowlistener(new windowadapter() public void windowclosing(windowevent e) system.exit(0); ); frame.pack(); frame.setvisible(true); sisejava语言程序设计实用教程swing应用程序基本结构应用程序基本结构l引入引入swing 包包:import javax.swing.import javax.swing.* *; ; import java.awt.import java.awt.* *; ; import java.awt.event

10、. import java.awt.event.* *; ; l选择选择look&feell设置窗口布局设置窗口布局l设置窗口容器设置窗口容器jframe、jpanell设置设置swing组件,将其加入组件,将其加入jpanell注意:注意:jframe的默认大小为的默认大小为00并且是不可见的,用并且是不可见的,用setbounds方法设置框架的大小,方法设置框架的大小,setvisible(true)显示窗口显示窗口sisejava语言程序设计实用教程swing中的中的look&feelcde/motif look and feelwindows look and feel

11、java look and feel sisejava语言程序设计实用教程swing中的中的look&feell使用使用uimanager.setlookandfeel( )uimanager.setlookandfeel( ) 方法进行设置。方法进行设置。在该方法中可以使用的参数:在该方法中可以使用的参数:uimanager.getcrossplatformlookandfeelclassname()uimanager.getcrossplatformlookandfeelclassname() - java look & feel. uimanager.getsysteml

12、ookandfeelclassname()uimanager.getsystemlookandfeelclassname() 当前平台的当前平台的look&feeljavax.swing.plaf.metal.metallookandfeeljavax.swing.plaf.metal.metallookandfeel -java look & feel. com.sun.java.swing.plaf.windows.windowslookandfeelcom.sun.java.swing.plaf.windows.windowslookandfeel - windows l

13、ook & feel. com.sun.java.swing.plaf.motif.motiflookandfeelcom.sun.java.swing.plaf.motif.motiflookandfeel - cde/motif look & feel. javax.swing.plaf.mac.maclookandfeeljavax.swing.plaf.mac.maclookandfeel - mac os look & feelsisejava语言程序设计实用教程swing组件层次结构(组件层次结构(p351)java.awt.containerjavax.s

14、wing.jcomponentjtextcomponentabstractbuttonjpaneljcomboboxjlabeljtreejtextareajtextfieldjpasswordfieldjtogglebuttonjbuttonjmenuitemjcheckboxjradiobuttonsisejava语言程序设计实用教程jcomponentl 组件类的层次结构组件类的层次结构java.lang.object | +-java.awt.component | +-java.awt.container | +-javax.swing.jcomponentl jcomponent大

15、多数大多数swing组件类父类组件类父类sisejava语言程序设计实用教程一些gui组件l 标签标签(jlabel)l 文本框文本框(jtextfield)l 按钮按钮(jbutton)l 复选框复选框(jcheckbox)l 组合框组合框(jcombobox)l 文本文本(jtextarea)l 框架框架(jframe)l 面板面板(jpanel)sisejava语言程序设计实用教程标签(jlabel)l 标签标签q为为gui提供文本提供文本(主要主要)或图像或图像(也可以也可以)信息信息q对应类对应类(jlabel) (jcomponent的子类的子类)q可以显示可以显示:q单行的只读的

16、文本信息单行的只读的文本信息q图像图像q同时显示文本与图像信息同时显示文本与图像信息q程序一般不修改标签的内容程序一般不修改标签的内容用法:用法:jlabel label=new jlabel(“标签名标签名”); panel.add(label) ;/将标签加入容器将标签加入容器sisejava语言程序设计实用教程文本框(jtextfield)l 文本框文本框(jtextfield)q显示单行的文本信息显示单行的文本信息qjtextfield extends jtextcomponentl 密码框密码框(jpasswordfield)q输入的字符显示为输入的字符显示为“*”l 用法举例:用法

17、举例:jtextfield textobj=new jtextfield(10);10指定文本域的长度指定文本域的长度 panel.add(textobj);textobj.settext(“yyyy-mm-dd”);string date=textobj.gettext();sisejava语言程序设计实用教程按钮(jbutton)l 当鼠标左键单击按钮组件时,能触发特定的事当鼠标左键单击按钮组件时,能触发特定的事件件l 在在java中中, 广义的按钮包括广义的按钮包括:q命令式按钮命令式按钮(jbutton)q复选框复选框(jcheckbox)q单选按钮单选按钮(jradiobutton)

18、用法举例:用法举例:checkboxgroup cbg=new checkboxgroup();checkbox check1=new checkbox(“check1,cbg,true); checkbox check2= new checkbox(“check2,cbg,false); panel.add(check1);panel.add(check2);sisejava语言程序设计实用教程组合框(jcombobox)l 组合框组合框(jcombobox)q可以从下拉式的列表框中选取其中的列表项可以从下拉式的列表框中选取其中的列表项q有时也称为下拉框有时也称为下拉框(drop-down

19、list)l 类类jcombobox中的方法中的方法qgetselectedindex( )q返回当前被选中的项返回当前被选中的项qsetmaximumrowcount(n)q设置最多显示列表项的项数设置最多显示列表项的项数q滚动条滚动条(scrollbar)会自动加上会自动加上sisejava语言程序设计实用教程滑动条(jslider)l 滑动条滑动条(jslider)提供了以图形方式进行数值选取提供了以图形方式进行数值选取的功能。的功能。l 可以用来表示程序执行的进度情况。可以用来表示程序执行的进度情况。sisejava语言程序设计实用教程ljava.awt.container是compo

20、nent的子类,一个容器可以容纳多个组件,并使它们成为一个整体。容器可以简化图形化界面的设计,以整体结构来布置界面。所有的容器都可以通过add()方法向容器中添加组件。lswing的容器分顶层容器和其它容器,一下为三个顶层组件:容器(container)技术介绍appletdialogframesisejava语言程序设计实用教程swing组件组件通用容器通用容器panel scroll panesplit panetool bartabbed panesisejava语言程序设计实用教程框架(jframe)l 类类 jframe 是是java.awt.frame的子类的子类l 在在swing

21、的组件中的组件中, jframe 并不全是由并不全是由java编写的编写的q是一种与平台关系比较密切的组件是一种与平台关系比较密切的组件(heavyweight component)java.lang.object | +-java.awt.component | +-java.awt.container | +-java.awt.window | +-java.awt.frame | +-javax.swing.jframesisejava语言程序设计实用教程设置窗口容器设置窗口容器ljframe类似于类似于frame ,jframe是是awt中中frame的子类。的子类。l不能直接向不能直

22、接向jframe中加入组件,中加入组件,而要向而要向jframe的的content pane或向另外提供的新的或向另外提供的新的content pane中增加组件。中增加组件。=content pane中包含除了中包含除了menu bar之外的所有组件。之外的所有组件。getcontentpane() 获取获取jframe的的content pane;setcontentpane() 设置设置content panesisejava语言程序设计实用教程面板(jpanel)q一种中间容器,用来组成其它组件一种中间容器,用来组成其它组件q可以添加各种组件可以添加各种组件(包括面板组件包括面板组件)

23、q面板面板(jpanel)的大小由它所包含的组件决定的大小由它所包含的组件决定q当组件个数增加,面板当组件个数增加,面板(jpanel)也会随之而增大也会随之而增大sisejava语言程序设计实用教程设置设置swing组件组件frame = new jframe(.); button = new jbutton(.);label = new jlabel(.); pane = new jpanel(); pane.add(button); pane.add(label); frame.getcontentpane().add(pane,borderlayout.center); sisejav

24、a语言程序设计实用教程建立建立swing guil swing包中定义了两类组件:包中定义了两类组件: 顶层容器(顶层容器(jframe,japplet,jwindow,jdialog) 轻型组件(轻型组件(j开头的所有组件,如开头的所有组件,如jbutton,jpanel,jmenu等)等)l一般如果使用一般如果使用swing组件,则程序中只使用组件,则程序中只使用swing组件组件 和和swing容器。容器。l swing组件可以加入到一个与顶层容器相关的组件可以加入到一个与顶层容器相关的content pane中,而不能直接加入到顶层容器中。中,而不能直接加入到顶层容器中。sisejav

25、a语言程序设计实用教程13.2 布局管理器sisejava语言程序设计实用教程布局管理器布局管理器-layoutmanagerljava为了实现跨平台的特性并且获得动态的布局效果,为了实现跨平台的特性并且获得动态的布局效果,java将容器内的所有组件安排给一个将容器内的所有组件安排给一个“布局管理器布局管理器”负负责管理,如:责管理,如:排列顺序,组件的大小、位置排列顺序,组件的大小、位置,当窗口移,当窗口移动或调整大小后组件如何变化等功能授权给对应的容器动或调整大小后组件如何变化等功能授权给对应的容器布局管理器来管理。布局管理器来管理。l不同的布局管理器使用不同算法和策略,容器可以通过不同的

26、布局管理器使用不同算法和策略,容器可以通过选择不同的布局管理器来决定布局。选择不同的布局管理器来决定布局。sisejava语言程序设计实用教程布局管理器的类型 java中的布局类型包括以下几种:- flowlayout(流式布局)(流式布局)- borderlayout (边界布局)(边界布局) - gridlayout(网格布局)(网格布局)- cardlayout (卡片布局)(卡片布局)- gridbaglayout(高级方格式界面设计)(高级方格式界面设计)- boxlayout(盒式界面设计):由(盒式界面设计):由swing包提供包提供 - - null(空布局)(空布局)sise

27、java语言程序设计实用教程flowlayout布局管理器l flowlayout 是panel、jpanel、applet的缺省布局管理器。其组件的放置规律是从上到下、从左到右进行放置其组件的放置规律是从上到下、从左到右进行放置。如如果容器足够宽,第一个组件先添加到容器中第一行的最果容器足够宽,第一个组件先添加到容器中第一行的最左边,后续的组件依次添加到上一个组件的右边,如果左边,后续的组件依次添加到上一个组件的右边,如果当前行已放置不下该组件,则放置到下一行的最左边当前行已放置不下该组件,则放置到下一行的最左边。 l 当容器的大小发生变化时,用flowlayout管理的组件会发生变化,其变

28、化规律是:组件的大小不变,但是相对位置会发生变化。例如有三个按钮都处于同一行,但是如果把该窗口变窄,窄到刚好能够放下一个按钮,则第二个按钮将折到第二行,第三个按钮将折到第三行。sisejava语言程序设计实用教程flowlayout布局管理器l flowlayout的构造函数有:- flowlayout( ):生成一个默认的流式布局生成一个默认的流式布局- flowlayout(int alignment):可以设定每一行组可以设定每一行组件的对齐方式件的对齐方式 - flowlayout(int alignment,int horz,int vert):可可以指定对齐方式,设定组件间的水平和

29、垂直距离以指定对齐方式,设定组件间的水平和垂直距离l 对齐方式参数的含义:sisejava语言程序设计实用教程l flowlayout(flowlayout.right,20,40);/*第一个参数表示组件的对齐方式,指组件在这一行中的位置是第一个参数表示组件的对齐方式,指组件在这一行中的位置是居中对齐、居右对齐还是居左对齐居中对齐、居右对齐还是居左对齐,第二个参数是组件之间的,第二个参数是组件之间的横向间隔,第三个参数是组件之间的纵向间隔,单位是象素。横向间隔,第三个参数是组件之间的纵向间隔,单位是象素。*/l flowlayout(flowlayout.left); /居左对齐,横向间隔和

30、纵向间隔都是缺省值居左对齐,横向间隔和纵向间隔都是缺省值5个象素个象素l flowlayout(); /缺省的对齐方式居中对齐,横向间隔和纵向间缺省的对齐方式居中对齐,横向间隔和纵向间隔都是缺省值隔都是缺省值5个象素个象素 flowlayout mylayout = new flowlayout();flowlayout exlayout = new flowlayout(flowlayout.right);setlayout(exlayout); / 为容器为容器设置新布局设置新布局 构造方法说明构造方法说明sisejava语言程序设计实用教程(p355,演示),演示)sisejava语言程

31、序设计实用教程l 网格布局管理器以矩形网管形式对容器的组件进行布置。l 容器被分成大小相等的矩形格子,一个矩形格子中放置一个组件,从左到右,自顶向下地放置。l gridlayout的构造函数如下所示:q gridlayout():生成一个单列的网格布局q gridlayout(int row,int col):生成一个设定行数和列数的网格布局q gridlayout(int row,int col,int horz,int vert):可以设置组件之间的水平和垂直间隔gridlayout布局管理器sisejava语言程序设计实用教程示例(演示). . . button btn; / 声明按钮数

32、组声明按钮数组 string str=1,2,3,4,5,6,7,8,9; setlayout(new gridlayout(3,3); btn=new buttonstr.length; / 创建按钮数组创建按钮数组 for(int i=0;istr.length;i+) btni=new button(stri); add(btni); sisejava语言程序设计实用教程l borderlayout 是frame、jframe、dialog和japplet的缺省布局管理器。borderlayout布局管理器把容器分成5个区域:north,south,east,west和center,每个

33、区域只能放置一个组件。borderlayout布局管理器centernorthsouthwesteastsisejava语言程序设计实用教程lborderlayout() :构造一个组件之间没有间距的新边界布局。 lborderlayout(int hgap, int vgap) :指定组件之间的水平、垂直间距来构造一个边界布局。 例如:f.setlayout(new borderlayout();f.add(north, new button(north);/第一个参数表示把按钮添加到容器的north区域 构造方法构造方法sisejava语言程序设计实用教程例子(演示). . . . . .

34、 setlayout(new borderlayout(); setlayout(new borderlayout(); button btneast=new button(button btneast=new button(东东);); button btnwest=new button(button btnwest=new button(西西);); button btnnorth=new button(button btnnorth=new button(北北);); button btnsouth=new button(button btnsouth=new button(南南););

35、 button btncenter=new button(button btncenter=new button(中中);); add(btneast,borderlayout.east);add(btneast,borderlayout.east); add(btnwest,borderlayout.west); add(btnwest,borderlayout.west); add(btnnorth,borderlayout.north); add(btnnorth,borderlayout.north); add(btnsouth,borderlayout.south); add(btn

36、south,borderlayout.south); add(btncenter,borderlayout.center); add(btncenter,borderlayout.center);sisejava语言程序设计实用教程l在使用borderlayout的时候,如果容器的大小发生变化,其变化规律为:组件的相对位置不变,大小发生变化。例如:l容器变高了,则north、south区域不变,west、center、east区域变高;l如果容器变宽了,west、east区域不变,north、center、south区域变宽。l不一定所有的区域都有组件,如果四周的区域(west、east、no

37、rth、south区域)没有组件,则由center区域去补充,但是如果center区域没有组件,则保持空白borderlayout内的组件变化特性内的组件变化特性sisejava语言程序设计实用教程cardlayout布局管理器(p358,演示)l 卡片布局是把组件安排到不同的卡片容器中,这个卡片容这个卡片容器相互重叠,但一次只能显示一个组件器相互重叠,但一次只能显示一个组件,因此也称之为“联合布局(combining layouts)”,该布局管理器会自动改变原有尺寸,充满整个空间,在添加组件时需要给组件起个在添加组件时需要给组件起个名称,以便与以后直接通过名称调用组件。名称,以便与以后直接

38、通过名称调用组件。l 每当需要许多面板切换,而每个面板需要显示为不同布局时,可以使用卡片布局。l 卡片布局提供了两种方式显示组件一种是通过public void show(container parent,string name);另一种是根据组件添加的顺序直接调用first(container parent),next(container parent),previous(container parent),last(container parent)4个方法来显示组件 sisejava语言程序设计实用教程l boxlayout是swing提供的布局管理器,它有两种排列方式,一种是水平的,另

39、一种是垂直的。我们可以使用boxlayout提供的两个常量x_axis、y_axis来指明组件在容器中是水平还是垂直排列的。l 构造方法:构造方法: boxlayout(container con, int axis) q boxlayout.x_axis或或boxlayout.y_axisboxlayout布局管理器sisejava语言程序设计实用教程gridbaglayout类与gridbagconstraints类lgridbaglayout 是一个灵活的布局管理器,借助于gridbagconstraints类,实现更灵活的外观管理,提供具有不同大小的行和列来放置组件,每个单提供具有不同

40、大小的行和列来放置组件,每个单元大小可不同。元大小可不同。 l方法:使用gridbagconstraints对象来确定组件的大小和位置约束,然后将其加入gridbaglayout 对象中button1 button2 button3button8button5button6button7button4button9sisejava语言程序设计实用教程1. gridbaglayout gbl=new gridbaglayout(); /只有一种无参构造方法2. panel.setlayout(gbl); 3. gridbagconstraints q=new gridbagconstraints

41、();4. /配置约束对象5. q.*=*;6. 7. gbl.setconstraints(component, q); /将组件component按照约束q设置8. panel.add(component);具体的使用方式(具体的使用方式(p359)sisejava语言程序设计实用教程常用的约束条件一常用的约束条件一lfill属性:当组件的显示区域大于组件大小时的显示方式。该属性必须与weighttx和weighty属性一起使用q默认值为gridbagconstraints.none,表示组件大小不变 ;qgridbagconstraints.horizontal表示将组件拉宽到与单元格宽

42、度相同;qgridbagconstraints.vertical表示将组件的高度提升到与单元格高度一致;qgridbagconstraints.both表示将组件的高度和宽度都拉伸到与单元格一致.lboxlayout属性允许纵向或横向布置多个组件的布局管理器sisejava语言程序设计实用教程常用的约束条件二常用的约束条件二lgridwidth,gridheight属性:指定组件所占的单元格的数量,默认值皆为1. gridwidth表示横向单元格数量;gridheight表示纵向单元格数量.lgridx,gridy属性:指定组件所在单元格的位置. gridx表示列数; gridy表示行数.lw

43、eightx,weighty属性:指定当图形窗口扩大时,各单元格如何分配被扩大的空间.weightx表示横向扩大权重,weighty表示纵向扩大权重.lipadx,ipady属性:指定组件内部的填充宽度和高度.linsets属性:指定组件和单元格之间的空隙.lanchor属性:指定当组件小于单元格时的放置方式.sisejava语言程序设计实用教程null布局管理器l 当用户不想使用布局管理器,需要自己设置组件的位置和大小时,可以把容器的布局设置为可以把容器的布局设置为null布局布局。l 向空布局的容器添加组建时需要下列两个步骤:l 使用add(c)方法向容器中添加组件c;l 组件调用setb

44、ounds(int x,int y,int width,int height)方法设置该组件在容器中的位置。l 需要注意的是,这种方法会导致程序与系统相关,如不同的分辨率会产生不同的效果。sisejava语言程序设计实用教程小结:布局管理(一)l flowlayout: 组件在一行中从左至右水平排列,排满后折行,缺省的panel布局管器l borderlayout:北、南、东、西、中,缺省的窗口容器的管理器l cardlayout:每一个组件作为一个卡片,容器仅显示多个卡片中的某一个l gridlayout:以行和列的网格形式安排组件l gridbaglayout:使用复杂、功能灵活sisej

45、ava语言程序设计实用教程小结:布局管理(二)l frame是一个顶级窗口。是一个顶级窗口。frame的缺省布局管理器为的缺省布局管理器为borderlayout。l panel 无法单独显示,必须添加到某个容器中。无法单独显示,必须添加到某个容器中。 panel 的的缺省布局管理器为缺省布局管理器为flowlayout。l 当把当把panel 作为一个组件添加到某个容器中后,该作为一个组件添加到某个容器中后,该panel 仍然可以有自己的布局管理器。因此,可以利用仍然可以有自己的布局管理器。因此,可以利用panel 使使得得borderlayout 中某个区域显示多个组件,达到设计复中某个区

46、域显示多个组件,达到设计复杂用户界面的目的杂用户界面的目的 。l 如果采用无布局管理器如果采用无布局管理器 setlayout(null),则必须使用,则必须使用setlocation(),setsize(),setbounds()等方法手工设置组等方法手工设置组件的大小和位置,此方法会导致平台相关,不鼓励使用。件的大小和位置,此方法会导致平台相关,不鼓励使用。 sisejava语言程序设计实用教程13.3 处理事件sisejava语言程序设计实用教程几个有用的概念l 事件 描述用户所执行的操作,描述用户所执行的操作,在java.awt.event包中定义了若干类型的事件若干类型的事件(例如点

47、击鼠标、按下键盘、关闭窗口)(例如点击鼠标、按下键盘、关闭窗口)l 监听者接口 特定类型的listener接口,用于监听特定类型的事件l 监听者类 是实现了某种监听者接口的类,由编程者定义l 事件监听者 是某个监听者类的对象,由编程者使用new创建sisejava语言程序设计实用教程awt事件处理的基本概念和流程l 事件源用户在各种场合进行的各项操作,如敲击键盘或用鼠标点击某个组件等。事件源指的是产生事件的对象事件源指的是产生事件的对象。l 事件对象对于不同的事件源,java虚拟机会产生相应类型的事件对象。java自动识别各种不同的事件对象的类型并进行分类处理。l 事件处理(监听)器接口各种类

48、型的事件均有对应的事件处理器接口事件处理器接口。该接口封装了与其对应类该接口封装了与其对应类型事件的各种处理方法,型事件的各种处理方法,并建立了事件到相应处理并建立了事件到相应处理方法的自动映射。方法的自动映射。sisejava语言程序设计实用教程事件处理模型l基于授权事件模型:q 事件来源对象事件来源对象s因用户进行操作(鼠标或键盘)q 系统会自动触发此事件类对象事件类对象e,并通知所授权的事件监听者l(需事先调用来源对象的addxxxlistener方法向l注册),q 事件监听者事件监听者l中有处理各种事件的方法(事件处理者1n)便会处理此事件e的各种状况 。sisejava语言程序设计实

49、用教程编程的基本方法(重点)1. 对java.awt中组件实现事件处理必须使用java.awt.event包,所以在程序开始应加入import java.awt.event.*语句。2. 定义事件监听者类,有两种方法(): 2.1.实现事件所对应的接口接口xxlistener,并重写接口中的全部方法全部方法(即使不需要的方法也必须定义,可定义为空方法)。 2.2. 继承事件对应的抽象适配器抽象适配器(adapter)类类,重写该类中所需的方法所需的方法3. 创建事件监听者对象4. 为将会触发事件的组件c注册相应的事件监听者对象: 事件源.addxxlistener(xxlistener代表某种事件监听者)。实际上addxxlistener中的参数是一个事件监听器对象事件监听器对象。5. 要删除事件监听者可以使用语句:事件源.removexxlistener;sisejava语言程序设计实用教程public class buttonact extends frame .

温馨提示

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

评论

0/150

提交评论