java语言程序设计教程第二版习题解答_第1页
java语言程序设计教程第二版习题解答_第2页
java语言程序设计教程第二版习题解答_第3页
java语言程序设计教程第二版习题解答_第4页
java语言程序设计教程第二版习题解答_第5页
已阅读5页,还剩87页未读 继续免费阅读

下载本文档

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

文档简介

习题一1简述面向对象软件开发方法的重要意义。【答】面向对象的软件开发方法按问题论域来设计模块,以对象代表问题解的中心环节,力求符合人们日常的思维习惯,采用“对象消息”的程序设计模式,降低或分解问题的难度和复杂性,从而以较小的代价和较高的收益获得较满意的效果,满足软件工程发展需要。2解释下面几个概念1)对象2)实例3)类4)消息5)封装6)继承7)多态【答】1)对象就是现实世界中某个具体的物理实体在计算机中的映射和体现,是由属性和操作所构成的一个封闭整体。2)实例是对象在计算机内存中的映像。3)类是描述对象的“基本原型”,是描述性的类别或模板,即对一组对象的抽象。它定义一组对象所能拥有的共同特征,用以说明该组对象的能力与性质。4)消息消息是对象之间进行通信的一种数据结构。5)封装封装性是保证软件部件具有优良的模块性的基础。面向对象的类是封装良好的模块,类定义将其说明(用户可见的外部接口)与实现(用户不可见的内部实现)显式地分开,其内部实现按其具体定义的作用域提供保护。6)继承继承性是子类自动共享父类数据结构和方法的机制,这是类之间的一种关系。7)多态多态性是指一个名字具有多种语义,即指同一消息为不同对象所接受时,可以导致不同的操作。3对象“汽车”与对象“小汽车”是什么关系,对象“汽车”与“轮胎”又是什么关系【答】对象“汽车”与对象“小汽车”具有继承关系,即对象“小汽车”继承了对象“汽车”。“轮胎”是对象“汽车”的一个属性,所以对象“汽车”包含“轮胎”,二者是包含关系。4简述JAVA语言的主要特点。【答】JAVA语言的主要特点(1)简单性(2)面向对象(3)分布式(4)健壮性(5)结构中立(6)安全性(7)可移植(8)解释的(9)高性能(10)多线程(11)动态性5简述JAVA语言与C/C语言的主要差异。【答】JAVA基于C,与之有许多相似之处,但其设计更易于使用,它们之间主要差异有(1)JAVA中无CC中最复杂并有潜在危险的指针(2)JAVA无C/C中的INCLUDE、DEFINE和头文件。(3)JAVA无C/C中的STRUCTURE,UNION及TYPEDEF。(4)JAVA无C/C中的函数、指针和多重继承。(5)JAVA无C/C中的GOTO指令。(6)JAVA无C/C中的操作符重载OPERATIOROVERLOADING、自动类型的转换。(7)JAVA系统要求对对象进行相容性检查,以防止不安全的类型转换。(8)JAVA语言最强大的特性之一是它的平台独立性,JAVA可以处理好平台之间的移植问题。(9)JAVA语言中没有全局变量的定义,只能通过公用的静态的变量实现,从而减少了引起错误的地方。6什么叫JAVA虚拟机什么叫JAVA的字节码【答】JAVA虚拟机是一个软件系统,它可以翻译并运行JAVA字节码。它是JAVA的核心,保证了在任何异构的环境下都可运行JAVA程序,解决了JAVA的跨平台的问题。JAVA的字节码(BYTECODE)是与平台无关的是虚拟机的机器指令7简述JAVA程序的运行过程。【答】首先编写JAVA源代码程序,通过JAVA虚拟机编译成CLASS的字节码程序。然后通过然后再执行翻译所生成的字节代码,属于先解释后执行方式。在运行时,字节码载入器用于调入包含、继承所用到的所有类,确定内存分配,变成真正可执行的机器码。由,再通过字节码校验器就是用于检验字节码是否正确,如果通过校验,再由系统执行平台解释执行。8JAVA程序分哪两类各有什么特点【答】JAVA程序根据程序结构的组成和运行环境的不同可以分为两类JAVAAPPLICATION(JAVA独立应用程序)和JAVAAPPLET(JAVA小应用程序)。JAVA独立应用程序是一个完整的程序,需要独立的JAVA解释器来解释执行;而JAVA小应用程序则是嵌在WEB页面中的非独立应用程序,由WEB浏览器内部所包含的JAVA解释器来解释执行,为WEB页面增加交互性和动态性。习题二1JAVA语言对标识符命名有何规定,下面这些标识符哪些是合法的,哪些是不合法的。1)MYNAME2JAVALANGUAGE32PERSON4_IS_HAS512345。【答】合法的标识符有MYNAME、JAVALANGUAGE、_IS_HAS非法的标识符有2PERSON、123452JAVA有哪些基本数据类型,与C/C相比有何特点复合数据类型是哪几种【答】基本数据类型有整型数据类型(字节整型、短整型、整型、长整型),实数数据类型(单精度实数、双精度实数),字符数据类型和布尔数据类型。与C/C相比,JAVA的数据类型与C相似,但有两点不同在JAVA语言中所有的数据类型是确定的,与平台无关,所以在JAVA中无SIZEOF操作符;JAVA中每种数据类型都对应一个默认值。这两点体现了JAVA语言的跨平台性和完全稳定性。JAVA的复合类型是由用户根据需要自己定义并实现其运算的数据类型,主要有类类型、接口和数组等。3JAVA的字符类型采用何种编码方案有何特点【答】JAVA的字符类型采用16位UNICODE(全球文字共享编码)方式,用16位来表示东西方字符。由于采用UNICODE编码方案,使得JAVA在处理多语种的能力方面得到大大提高,从而为JAVA程序在基于不同语种之间实现平滑移植铺平了道路。4JAVA有哪些运算符和表达式请写出下面这些表达式的运算结果(设A2,B3,FTRUE)。1)AB2A1PUBLICCLASSSTRINGTESTPUBLICSTATICVOIDMAINSTRINGARGSSTRINGS1“ILOVEJAVA“STRINGS2“ILIKEJAVA“STRINGS3“ILIKEJAVA“STRINGBUFFERS4NEWSTRINGBUFFERS1STRINGBUFFERS5NEWSTRINGBUFFER“APPEND“CHARC1NEWCHARS1LENGTHSYSTEMOUTPRINTLN“S1的长度“S1LENGTHSYSTEMOUTPRINTLN“S1和S2相同吗“S1COMPARETOS20“相同“不同“SYSTEMOUTPRINTLN“S2和S3相同吗“S2COMPARETOS30“相同“不同“SYSTEMOUTPRINTLN“S1连接S2后的字符串为“S1CONCATS2SYSTEMOUTPRINTLNS1STARTSWITH“J“,7SYSTEMOUTPRINTLNS1ENDSWITH“S1GETCHARS0,S1LENGTH,C1,0FORINTI0I0SNEWINTLENGTH/初始化队列TOPREAR0/队列空PUBLICINTGETTOP/获取队头元素IFISEMPTYRETURNSTOPRETURN0PUBLICINTGETREAR/获取队尾元素IFISEMPTYRETURNSREARRETURN0PUBLICVOIDENQUEUEINTCONTENT/进队列IFISFULLSREARCONTENTREARREAR1LENGTHPUBLICVOIDDELQUEUE/出队列IFISEMPTYTOPTOP1LENGTHPUBLICBOOLEANISFULL/判断队列满IFREAR1LENGTHTOPRETURNTRUERETURNFALSEPUBLICBOOLEANISEMPTY/判断队列空IFREARTOPRETURNTRUERETURNFALSE9编程定义一个栈类,它封装了栈数组,判断栈空方法、栈满方法以及进栈和出栈方法。【答】栈类STACK的定义如下列代码所示PACKAGEJAVABOOKANSWERCH04PUBLICCLASSEX9PRIVATEINTLENGTHPRIVATEINTTOPPRIVATEINTSPUBLICEX9INTLEN/初始化空栈THISLENGTHLEN/设置栈的空间大小IFLEN0SNEWINTLENTOP0/设置为空栈PUBLICINTGETTOP/获得栈顶元素RETURNSTOPPUBLICBOOLEANISFULL/判断栈满IFTOP1LENGTHRETURNTRUERETURNFALSEPUBLICBOOLEANISEMPTY/判断栈空IFTOP0FORINTI1I0RETURNLISTINDEXRETURN0PUBLICINTGETLOCATIONCHARC/获取指定元素的位置FORINTI0I0ILISTNEWARRAYLIST或ARRAYLISTARRAYLISTNEWARRAYLIST或LINKEDLISTLINKEDLISTNEWLINKEDLIST等等。(2)要创建SET对象则调用相应的构造函数HASHSETHASHSETNEWHASHSET等。SET定义的集合中不能包含相同的元素。2列举几种可以遍历集合对象中元素的方法。【答】可以使用ITERATOR接口定义的方法来遍历类集,或直接使用循环语句来对集合中对象进行遍历。3如何向一个HASHMAP对象中添加元素【答】通过调用MAP接口中定义好的PUT()方法可以该对象中添加相应的元素,该方法原型为OBJECTPUTOBJECTKEY,OBJECTVALUE。如若已经建立了一个HASHMAP对象HASHMAP,则可使用HASHMAPPUT“关键字”,“元素值”来向HASHMAP对象添加元素及该元素的值。4使用本章介绍的一种集合类型编写程序,实现从控制台任意输入若干名字,如MIKE、JONE、BENNY,将它们以字典序按升序方式输出。【答】PACKAGEJAVABOOKANSWERCH06IMPORTJAVAUTILIMPORTJAVAIOPUBLICCLASSCH6EXE4PUBLICSTATICVOIDMAINSTRINGARGSTHROWSIOEXCEPTIONLISTLISTNEWARRAYLISTSYSTEMOUTPRINTLN“请输入若干学生姓名(输入EXIT则终止输入)“BUFFEREDREADERBUFNEWBUFFEREDREADERNEWINPUTSTREAMREADERSYSTEMINSTRINGSTRBUFREADLINEWHILESTREQUALS“EXIT“LISTADDSTRSTRBUFREADLINEBUFCLOSECOLLECTIONSSORTLISTSYSTEMOUTPRINTLN“您输入的学生有(按字典序排列)“ITERATORILISTITERATORWHILEIHASNEXTSTRINGTSTRINGINEXTSYSTEMOUTPRINTLNT5从下面文本中计算单词“JAVA”、“LANGUAGE”、“SIMPLE”的出现次数,并按次数从大到小输出结果。文本内容为JAVAISCERTAINLYAGOODPROGRAMMINGLANGUAGEJAVAWASNEVERJUSTALANGUAGEJAVAISAWHOLEPLATFORMJAVAHASALOTOFNICELANGUAGEFEATURESJAVA2DWASDESIGNEDSOTHATSIMPLEOPERATIONSARESIMPLEANDCOMPLEXOPERATIONSAREFEASIBLE【答】PACKAGEJAVABOOKANSWERCH06IMPORTJAVAUTILPUBLICCLASSCH6EXE5PUBLICSTATICVOIDMAINSTRINGARGSSTRINGTEXT“JAVAISCERTAINLYAGOODPROGRAMMINGLANGUAGE“JAVAWASNEVERJUSTALANGUAGEJAVAISAWHOLEPLATFORM“JAVAHASALOTOFNICELANGUAGEFEATURES“JAVA2DWASDESIGNEDSOTHATSIMPLEOPERATIONSARESIMPLEANDCOMPLEXOPERATIONSAREFEASIBLE“INTCOUNT0INTFLAG0,0,0MAPHASHMAPNEWHASHMAPSTRINGTOKENIZERSTNEWSTRINGTOKENIZERTEXT,“STRINGKEY“JAVA“,“LANGUAGE“,“SIMPLE“WHILESTHASMORETOKENSSTRINGKSTNEXTTOKENFORINTI0ISTACKNEWSTACKSTRINGSSJOPTIONPANESHOWINPUTDIALOG“请输入一个整数“INTNINTEGERPARSEINTSFORINTI1I/题7程序源代码CH6EXE7JAVAPACKAGEJAVABOOKANSWERCH06IMPORTJAVAAWTIMPORTJAVAAPPLETIMPORTJAVAUTILIMPORTJAVATEXTPUBLICCLASSCH6EXE7EXTENDSAPPLETSTRINGMSG,FONT,NOWDATE,NOWTIMEINTX,Y,FONTCOLOR,SIZEPUBLICVOIDINITMSGGETPARAMETER“MESSAGE“XINTEGERPARSEINTGETPARAMETER“X_POSITION“YINTEGERPARSEINTGETPARAMETER“Y_POSITION“FONTCOLORINTEGERPARSEINTGETPARAMETER“FONTCOLOR“,16FONTGETPARAMETER“FONT“SIZEINTEGERPARSEINTGETPARAMETER“SIZE“SIMPLEDATEFORMATFOMATTER1NEWSIMPLEDATEFORMAT“YYYYMMDD“SIMPLEDATEFORMATFOMATTER2NEWSIMPLEDATEFORMAT“HHMMSS“DATEDATENEWDATENOWDATEFOMATTER1FORMATDATENOWTIMEFOMATTER2FORMATDATEPUBLICVOIDPAINTGRAPHICSGFONTFNEWFONTFONT,FONTBOLD,SIZEGSETFONTFGSETCOLORNEWCOLORFONTCOLORGDRAWSTRING“TODAYIS“NOWDATE,50,40GDRAWSTRING“NOWTHETIMEIS“NOWTIME,50,70习题七1什么是图形上下文,在JAVA2和JAVA2D中,如何实现对图形上下文的管理【答】图形上下文有时也称为图形环境,指允许用户在屏幕绘制图形的信息,它由GRAPHICS类封装,可以通过COMPONENT类的GETGRAPHICS()方法返回获得。图形上下文表示一个绘制图层,如组件的显示区、打印机上的一页、或一个屏幕外图像缓冲区。它提供了绘制三种图形对象的方法形状、文本和图像。在JAVA中,可以通过GRAPHICS的对象对图形上下文进行管理。2GRAPHICS2D的属性有哪些,分别实现什么功能【答】GRAPHICS2D对象有6种属性,包括PAINT、STROKE、FONT、TRANSFORM、CLIP和COMPOSITE。(1)PAINT该属性确定所绘制线条的颜色,以及填充图形的颜色和图案等。(2)STROKE该属性可以确定线条的类型以及粗细,还有线段端点的形状。(3)FONT该属性可以确定所显示字符串的字体。(4)TRANSFORM该属性确定了图形绘制过程中要应用的转换方法,通过指定转换方法可将所画内容进行平移、旋转和缩放(5)CLIP该属性定义了组件上某区域的边界。(6)COMPOSITE该属性定义了如何绘制重叠的几何图形,使用合成规则可以确定重叠区域的显示效果。3编写程序,使用柱形显示以下信息9010010人(用蓝色矩形表示),809020人(用灰色矩形表示),708040人(用绿色矩形表示),607020人(用橙色矩形表示),60以下10人(用红色矩形表示)。程序结果如图718所示。图718第3题程序显示结果【答】PACKAGEJAVABOOKANSWERCH07IMPORTJAVAAWTIMPORTJAVAAWTGEOMIMPORTJAVAXSWINGPUBLICCLASSCH7EXE3EXTENDSJFRAMEPUBLICCH7EXE3SUPERSETTITLE“EXERCISE73“SETSIZE500,300SETVISIBLETRUEPUBLICVOIDPAINTGRAPHICSGGRAPHICS2DG2GRAPHICS2DGLINE2DLNEWLINE2DDOUBLE50,250,450,250G2DRAWLRECTANGLE2DR1NEWRECTANGLE2DDOUBLE100,200,60,50G2SETCOLORCOLORBLUEG2FILLR1RECTANGLE2DR2NEWRECTANGLE2DDOUBLE160,150,60,100G2SETCOLORCOLORGRAYG2FILLR2RECTANGLE2DR3NEWRECTANGLE2DDOUBLE220,50,60,200G2SETCOLORCOLORGREENG2FILLR3RECTANGLE2DR4NEWRECTANGLE2DDOUBLE280,150,60,100G2SETCOLORCOLORORANGEG2FILLR4RECTANGLE2DR5NEWRECTANGLE2DDOUBLE340,200,60,50G2SETCOLORCOLORREDG2FILLR5G2SETCOLORCOLORBLACKG2DRAWSTRING“90100“,105,270G2DRAWSTRING“10人“,115,190G2DRAWSTRING“8090“,170,270G2DRAWSTRING“20人“,175,140G2DRAWSTRING“7080“,230,270G2DRAWSTRING“40人“,235,40G2DRAWSTRING“6070“,290,270G2DRAWSTRING“20人“,295,140G2DRAWSTRING“60以下“,350,270G2DRAWSTRING“10人“,355,190PUBLICSTATICVOIDMAINSTRINGARGSCH7EXE3ENEWCH7EXE3ESETDEFAULTCLOSEOPERATIONJFRAMEEXIT_ON_CLOSE4编写程序,使用扇形图显示以下信息9010010,809020,708040,607020,60以下10。程序结果如图719所示。图719第4题程序显示结果【答】PACKAGEJAVABOOKANSWERCH07IMPORTJAVAAWTIMPORTJAVAAWTGEOMIMPORTJAVAXSWINGPUBLICCLASSCH7EXE4EXTENDSJFRAMEPUBLICCH7EXE4SUPERSETTITLE“EXERCISE74“SETSIZE300,300SETVISIBLETRUEPUBLICVOIDPAINTGRAPHICSGGRAPHICS2DG2GRAPHICS2DGINTXGETWIDTH/2INTYGETHEIGHT/2ARC2DR1NEWARC2DDOUBLEX120,Y120,240,240,0,36,ARC2DPIEG2SETCOLORCOLORMAGENTAG2FILLR1ARC2DR2NEWARC2DDOUBLEX120,Y120,240,240,36,72,ARC2DPIEG2SETCOLORCOLORLIGHT_GRAYG2FILLR2ARC2DR3NEWARC2DDOUBLEX120,Y120,240,240,108,144,ARC2DPIEG2SETCOLORCOLORGREENG2FILLR3ARC2DR4NEWARC2DDOUBLEX120,Y120,240,240,252,72,ARC2DPIEG2SETCOLORCOLORORANGEG2FILLR4ARC2DR5NEWARC2DDOUBLEX120,Y120,240,240,324,36,ARC2DPIEG2SETCOLORCOLORREDG2FILLR5G2SETCOLORCOLORBLACKG2DRAWSTRING“9010010“,200,135G2DRAWSTRING“809020“,150,80G2DRAWSTRING“708040“,50,145G2DRAWSTRING“607020“,150,230G2DRAWSTRING“60以下10“,200,175PUBLICSTATICVOIDMAINSTRINGARGSCH7EXE4ENEWCH7EXE4ESETDEFAULTCLOSEOPERATIONJFRAMEEXIT_ON_CLOSE5使用GRAPHICS2D绘制静止时钟的钟面,要求绘制出整点刻度以及时钟的时针和分针且时钟显示为3点30分。【答】PACKAGEJAVABOOKANSWERCH07IMPORTJAVAAWTIMPORTJAVAXSWINGPUBLICCLASSCH7EXE5EXTENDSJFRAMEPUBLICCH7EXE5SUPERSETTITLE“CH7EXERCISE5“SETSIZE300,200SETVISIBLETRUEPUBLICVOIDPAINTGRAPHICSGGRAPHICS2DG2GRAPHICS2DGINTX150,Y100,RADIUS70G2DRAWOVAL80,30,140,140G2DRAWSTRING“12“,145,42G2DRAWSTRING“11“,INTXRADIUSMATHCOS2MATHPI/6,INTYRADIUSMATHSIN2MATHPI/610G2DRAWSTRING“10“,INTXRADIUSMATHCOSMATHPI/6,INTYRADIUSMATHSINMATHPI/610G2DRAWSTRING“9“,83,105G2DRAWSTRING“8“,INTXRADIUSMATHCOSMATHPI/65,INTYRADIUSMATHSINMATHPI/6G2DRAWSTRING“7“,INTXRADIUSMATHCOS2MATHPI/6,INTYRADIUSMATHSIN2MATHPI/6G2DRAWSTRING“6“,147,167G2DRAWSTRING“5“,INTXRADIUSMATHCOS2MATHPI/610,INTYRADIUSMATHSIN2MATHPI/6G2DRAWSTRING“4“,INTXRADIUSMATHCOSMATHPI/610,INTYRADIUSMATHSINMATHPI/6G2DRAWSTRING“3“,210,103G2DRAWSTRING“2“,INTXRADIUSMATHCOSMATHPI/610,INTYRADIUSMATHSINMATHPI/610G2DRAWSTRING“1“,INTXRADIUSMATHCOS2MATHPI/610,INTYRADIUSMATHSIN2MATHPI/610INTML45INTXMINTXMLMATHSIN302MATHPI/60INTYMINTYMLMATHCOS302MATHPI/60G2DRAWLINEX,Y,XM,YMINTHL35INTXHINTXHLMATHSIN352MATHPI/12INTYHINTYHLMATHCOS352MATHPI/12G2DRAWLINEX,Y,XH,YHPUBLICSTATICVOIDMAINSTRINGARGSCH7EXE5CNEWCH7EXE5CSETDEFAULTCLOSEOPERATIONJFRAMEEXIT_ON_CLOSE6使用GRAPHICS2D绘制一个立方体和六边形,并使用渐变填充方式填充立方体,使用纹理填充方式填充六边形,且六边形的外边框轮廓宽度为5【答】PACKAGEJAVABOOKANSWERCH07IMPORTJAVAAWTIMPORTJAVAAWTGEOMIMPORTJAVAAWTIMAGEBUFFEREDIMAGEIMPORTJAVAXSWINGPUBLICCLASSCH7EXE6EXTENDSJFRAMEPUBLICCH7EXE6SUPERSETTITLE“CH7EXERCISE6“SETSIZE300,200SETVISIBLETRUEPUBLICVOIDPAINTGRAPHICSGGRAPHICS2DG2GRAPHICS2DGRECTANGLE2DRNEWRECTANGLE2DFLOAT20,80,100,100G2DRAWRGENERALPATHPATH1NEWGENERALPATHPATH1MOVETO20,80PATH1LINETO40,45PATH1LINETO140,45PATH1LINETO120,80PATH1LINETO20,80G2DRAWPATH1GENERALPATHPATH2NEWGENERALPATHPATH2MOVETO120,80PATH2LINETO120,180PATH2LINETO140,145PATH2LINETO140,45PATH2LINETO120,80G2DRAWPATH2POINT2DP1NEWPOINT2DDOUBLE20,80POINT2DP2NEWPOINT2DDOUBLE70,130GRADIENTPAINTGPNEWGRADIENTPAINTP1,COLORWHITE,P2,COLORBLACK,TRUEG2SETPAINTGPG2FILLRP1NEWPOINT2DDOUBLE20,80P2NEWPOINT2DDOUBLE80,60GPNEWGRADIENTPAINTP1,COLORWHITE,P2,COLORBLACK,TRUEG2SETPAINTGPG2FILLPATH1P1NEWPOINT2DDOUBLE140,45P2NEWPOINT2DDOUBLE130,1125GPNEWGRADIENTPAINTP1,COLORWHITE,P2,COLORBLACK,TRUEG2SETPAINTGPG2FILLPATH2GENERALPATHPATH3NEWGENERALPATHPATH3MOVETO290,100PATH3LINETO23060MATHCOS2MATHPI/6,10060MATHSIN2MATHPI/6PATH3LINETO23060MATHCOS22MATHPI/6,10060MATHSIN22MATHPI/6PATH3LINETO23060MATHCOS32MATHPI/6,10060MATHSIN32MATHPI/6PATH3LINETO23060MATHCOS42MATHPI/6,10060MATHSIN42MATHPI/6PATH3LINETO23060MATHCOS52MATHPI/6,10060MATHSIN52MATHPI/6PATH3LINETO290,100STROKESTROKENEWBASICSTROKE50FG2SETSTROKESTROKEG2SETCOLORCOLORBLACKG2DRAWPATH3BUFFEREDIMAGEIMAGENEWBUFFEREDIMAGE10,10,BUFFEREDIMAGETYPE_INT_RGBGRAPHICS2DBGIMAGECREATEGRAPHICSBGSETCOLORCOLORYELLOWBGFILLOVAL0,0,5,5BGSETCOLORCOLORREDBGFILLOVAL0,5,5,5BGSETCOLORCOLORGREENBGFILLOVAL5,0,5,5BGSETCOLORCOLORBLUEBGFILLOVAL5,5,5,5RECTANGLE2DR1NEWRECTANGLE2DDOUBLE0,0,10,10TEXTUREPAINTTPNEWTEXTUREPAINTIMAGE,R1G2SETPAINTTPG2FILLPATH3PUBLICSTATICVOIDMAINSTRINGARGSCH7EXE6CNEWCH7EXE6CSETDEFAULTCLOSEOPERATIONJFRAMEEXIT_ON_CLOSE习题八1AWT包的GUI组件和SWING包的GUI组件有哪些不同【答】SWING包和AWT包的GUI具有类似的组件,不同之处在于与AWT的GUI组件相比,SWING是轻量级元件。SWING提供许多比AWT更好的屏幕显示元素。它们用纯JAVA写成,所以同JAVA本身一样可以跨平台运行。2什么是重量级组件什么是轻量级组件二者的区别是什么【答】依靠本地方法实现功能的组件称为重量级组件,而反之为轻量级的组件。二者的区别判断的依据是否是依赖本地方法。3什么是MVC模式请举例说明。【答】MVC是一种设计模式,M表示MODEL,说明业务模型,也就是组件的状态和行为,V表示VIEW视图,处理用户界面的显示;C表示CONTROLLER控制器,用来控制用户输入。例如JAVAXSWINGJBUTTON的组件实例中,一个JBUTTON按钮组件中MODEL说明了该按钮的状态、操作内部状态、添加删除监听事件、发生的事件;按钮的视图和控制器由一个接口BUTTONUI完成。如果一个类实现了这个接口,那么它将会负责创建一个用户界面,处理用户的操作。涉及的方法可以被分为三大类绘制PAINT、返回几何类型的信息和处理事件。4编写一个JAVA程序,实现用户密码输入界面。【答】实现用户密码输入的界面见下列程序。PACKAGEJAVABOOKANSWERCH08IMPORTJAVAXSWINGIMPORTJAVAAWTPUBLICCLASSEX4EXTENDSJFRAMEJLABELUSERLABELJTEXTFIELDUSERTEXTJLABELPASSWORDLABELJPASSWORDFIELDPASSWORDJBUTTONCONFIRMBTNPUBLICEX4SUPER“密码输入“USERLABELNEWJLABEL“用户名“PASSWORDLABELNEWJLABEL“密码“USERTEXTNEWJTEXTFIELD10PASSWORDNEWJPASSWORDFIELD10CONFIRMBTNNEWJBUTTON“确认“CONTAINERCONTAINERGETCONTENTPANECONTAINERSETLAYOUTNEWFLOWLAYOUTCONTAINERADDUSERLABELCONTAINERADDUSERTEXTCONTAINERADDPASSWORDLABELCONTAINERADDPASSWORDCONTAINERADDCONFIRMBTNPACKSETVISIBLETRUETRYUIMANAGERSETLOOKANDFEEL“COMSUNJAVASWINGPLAFWINDOWSWINDOWSLOOKANDFEEL“SWINGUTILITIESUPDATECOMPONENTTREEUITHISCATCHEXCEPTIONEJOPTIONPANESHOWMESSAGEDIALOGNULL,THISPUBLICSTATICVOIDMAINSTRINGARGSEX4CPFNEWEX4CPFSETDEFAULTCLOSEOPERATIONJFRAMEEXIT_ON_CLOSE5编写一个JAVA程序COUNTERJAVA,实现一个计算机器的图形界面。【答】COUNTERJAVA的程序见下列代码PACKAGEJAVABOOKANSWERCH08IMPORTJAVAAWTIMPORTJAVAXSWINGPUBLICCLASSEX5EXTENDSJFRAMEPRIVATECONTAINERCONTAINERPRIVATEGRIDBAGLAYOUTLAYOUTPRIVATEGRIDBAGCONSTRAINTSCONSTRAINTSPRIVATEJTEXTFIELDDISPLAYFIELD/计算结果显示区PUBLICEX5/构造方法,定义所有GUI组件SUPER“COUNTER“CONTAINERGETCONTENTPANELAYOUTNEWGRIDBAGLAYOUTCONTAINERSETLAYOUTLAYOUTCONSTRAINTSNEWGRIDBAGCONSTRAINTSDISPLAYFIELDNEWJTEXTFIELD20DISPLAYFIELDSETHORIZONTALALIGNMENTJTEXTFIELDRIGHTCONSTRAINTSGRIDX0CONSTRAINTSGRIDY0CONSTRAINTSGRIDWIDTH4CONSTRAINTSGRIDHEIGHT1CONSTRAINTSFILLGRIDBAGCONSTRAINTSBOTHCONSTRAINTSWEIGHTX100CONSTRAINTSWEIGHTY100LAYOUTSETCONSTRAINTSDISPLAYFIELD,CONSTRAINTSCONTAINERADDDISPLAYFIELDADDBUTTON“BACKSPACE“,0,1,2,1ADDBUTTON“CE“,2,1,1,1ADDBUTTON“C“,3,1,1,1ADDBUTTON“7“,0,2,1,1ADDBUTTON“8“,1,2,1,1ADDBUTTON“9“,2,2,1,1ADDBUTTON“/“,3,2,1,1ADDBUTTON“4“,0,3,1,1ADDBUTTON“5“,1,3,1,1ADDBUTTON“6“,2,3,1,1ADDBUTTON“,3,3,1,1ADDBUTTON“1“,0,4,1,1ADDBUTTON“2“,1,4,1,1ADDBUTTON“3“,2,4,1,1ADDBUTTON“,3,4,1,1ADDBUTTON“0“,0,5,1,1ADDBUTTON“/“,1,5,1,1ADDBUTTON“,2,5,1,1ADDBUTTON“,3,5,1,1ADDBUTTON“,0,6,4,1SETSIZE300,300SETVISIBLETRUEPRIVATEVOIDADDBUTTONSTRINGLABEL,INTROW,INTCOLUMN,INTWITH,INTHEIGHT/定义按钮JBUTTONBUTTONNEWJBUTTONLABELCONSTRAINTSGRIDXROWCONSTRAINTSGRIDYCOLUMNCONSTRAINTSGRIDWIDTHWITHCONSTRAINTSGRIDHEIGHTHEIGHTCONSTRAINTSFILLGRIDBAGCONSTRAINTSBOTHLAYOUTSETCONSTRAINTSBUTTON,CONSTRAINTSCONTAINERADDBUTTONPUBLICSTATICVOIDMAINSTRINGARGS/主程序EX5COUNTERNEWEX5COUNTERSETDEFAULTCLOSEOPERATIONJFRAMEEXIT_ON_CLOSE6编写一个JAVA程序FILEMENUJAVA,设计一个简易文件管理菜单。菜单有文件、编辑和帮助3项。其中文件菜单项有以下子菜单项新建、打开、关闭、退出;编辑菜单项有以下菜单项;复制、粘贴、查找、替换、定位;帮助菜单项有以下子菜单项拥护帮助、版本说明,采用WINDOWS操作系统的外观。【答】FILEMENUJAVA的源程序清单见下列代码PACKAGEJAVABOOKANSWERCH08IMPORTJAVAXSWINGPUBLICCLASSEX6EXTENDSJFRAMEPUBLICEX6SUPER“文件简易菜单“DEFINEMENUSETJMENUBARMENUBARSETVISIBLETRUESETSIZE400,300PRIVATEVOIDDEFINEMENUMENUBARNEWJMENUBARMENUBARSETTOOLTIPTEXT“FMS文件处理系统10“FILEMENUNEWJMENU“文件F“/定义文件菜单FILEMENUSETMNEMONICFNEWITEMNEWJMENUITEM“新建“OPENITEMNEWJMENUITEM“打开“CLOSEITEMNEWJMENUITEM“关闭“EXITITEMNEWJMENUITEM“退出“FILEMENUADDNEWITEMFILEMENUADDOPENITEMFILEMENUADDCLOSEITEMFILEMENUADDEXITITEMEDITMENUNEWJMENU“编辑E“EDITMENUSETMNEMONICECOPYITEMNEWJMENUITEM“复制“PASTEITEMNEWJMENUITEM“粘贴“SEARCHITEMNEWJMENUITEM“查找“REPLACEITEMNEWJMENUITEM“替换“LOCATEITEMNEWJMENUITEM“定位“EDITMENUADDCOPYITEMEDITMENUADDPASTEITEMEDITMENUADDSEARCHITEMEDITMENUADDREPLACEITEMEDITMENUADDLOCATEITEMHELPMENUNEWJMENU“帮助H“HELPMENUSETMNEMONICHUSERHELPITEMNEWJMENUITEM“帮助“VERSIONITEMNEWJMENUITEM“版本“HELPMENUADDUSERHELPITEMHELPMENUADDVERSIONITEMMENUBARADDFILEMENUMENUBARADDEDITMENUMENUBARADDHELPMENUPUBLICSTATICVOIDMAINSTRINGARGSEX6FMNEWEX6FMSETDEFAULTCLOSEOPERATIONJFRAMEEXIT_ON_CLOSEPRIVATEJMENUBARMENUBAR/主菜单条PRIVATEJMENUFILEMENU/文件菜单PRIVATEJMENUEDITMENU/编辑菜单PRIVATEJMENUHELPMENU/系统帮助菜单PRIVATEJMENUITEMNEWITEM/文件新建;PRIVATEJMENUITEMOPENITEM/文件打开;PRIVATEJMENUITEMCLOSEITEM/文件关闭PRIVATEJMENUITEMEXITITEM/文件退出;PRIVATEJMENUITEMCOPYITEM/文件复制;PRIVATEJMENUITEMPASTEITEM/文件粘贴;PRIVATEJMENUITEMSEARCHITEM/文件查找;PRIVATEJMENUITEMREPLACEITEM/文件替换;PRIVATEJMENUITEMLOCATEITEM/文件定位;PRIVATEJMENUITEMUSERHELPITEM/用户帮助;PRIVATEJMENUITEMVERSIONITEM/版本说明;习题九1什么是代理事件处理模型请举例说明。【答】JAVA语言采用基于代理的事件处理模型。基于代理事件处理模型是引进了监听器接口,每个事件类都有相关联的监听器接口。当用户对GUI组件有所动作,GUI组件会自动产生相应的事件来响应用户的动作。假设这些GUI组件已经注册了相关的监听器对象,监听器对象会一直监听已注册的组件对象是否有事件发生。当监听器对象监听到组件有相对应的事件发生,就会调用监听器对象中方法,即事件处理器来实现一定的动作。就这样,通过对目标监听器对象的相关JAVA方法调用,实现事件从事件源到监听者的传递。2常见的事件处理方式有哪几种请比较各种方式的特点【答】有通过(1)实现监听器接口来处理事件、(2)利用独立监听器类实现事件处理、(3)利用内部类实现事件处理、以及(4)利用匿名内部类实现事件处理四种事件处理方式。方法(1)可直接对监听器接口的方法进行处理和调用,并且应用简单方便。但是,这种方式存在一个问题,由于实现接口的方法和定义类的方法处于平行定义,如果要求对多个组件有不同的处理,这种方法无疑会增加阅读程序的困难。方法(2)事件处理的方式优点在于,处理事件的方法清晰明了,可读性强。另外,允许扩展事件适配器(具体内容见83节)来定义新的监听器的类,可以减少不需要的方法的处理。但是,在事件发生的主类中,会增加事件发生对监听器对象的方法的额外调用。方法(3)是利用内部类来实现事件处理,具有上述两种方法的优点。但是随着发生事件的组件增多,程序会变得比较庞大,增加对程序的理解。方法(4)是利用匿名内部类实现事件处理。有效减少代码的长度,但是利用匿名内部类更会增加程序阅读的难度。3编写程序,统计用户在一个窗口点击的次数,并在窗口的状态栏中显示处理。【答】实现窗口状态栏显示点击窗口次数的程序见CLICKCOUNTERJAVA,代码如下PACKAGEJAVABOOKANSWERCH09IMPORTJAVAAWTIMPORTJAVAAWTEVENTIMPORTJAVAXSWINGPUBLICCLASSEX3EXTENDSJFRAMEIMPLEMENTSMOUSELISTENERPUBLICEX3CONTAINERGETCONTENTPANECONTAINERSETLAYOUTNEWBORDERLAYOUTMAINFRMNEWJPANEL/定义主窗口MAINFRMSETSIZE400,400MAINFRMSETVISIBLETRUEMAINFRMADDMOUSELISTENERTHISSTATUPANENEWJPANEL/定义状态栏RESULTLBLNEWJLABEL“窗口状态“STATUPANEADDRESULTLBLCONTAINERADDMAINFRM,BORDERLAYOUTCENTERCONTAINERADDSTATUPANE,BORDERLAYOUTSOUTHSETSIZE500,400SETVISIBLETRUEPUBLICVOIDMOUSEENTEREDMOUSEEVENTEPUBLICVOIDMOUSEEXITEDMOUSEEVENTEPUBLICVOIDMOUSECLICKEDMOUSEEVENTE/处理点击事件IFEGETSOURCEMAINFRMTIMESRESULTLBLSETTEXT“点击次数为“TIMESPUBLICVOIDMOUSEPRESSEDMOUSEEVENTEPUBLICVOIDMOUSERELEASEDMOUSEEVENTEPUBLICSTATICVOIDMAINSTRINGARGSEX3CCNEWEX3CCSETDEFAULTCLOSEOPERATIONJFRAMEEXIT_ON_CLOSEJPANELMAINFRMJPANELSTATUPANEJLABELRESULTLBLCONTAINERCONTAINERPUBLICINTTIMES0/点击次数4编写程序,通过鼠标轮实现对一个圆形的大小控制及通过键盘实现圆形的移动。【答】实现鼠标对圆形大小和位置的控

温馨提示

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

评论

0/150

提交评论