Java项目教学教案_第1页
Java项目教学教案_第2页
Java项目教学教案_第3页
Java项目教学教案_第4页
Java项目教学教案_第5页
已阅读5页,还剩49页未读 继续免费阅读

下载本文档

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

文档简介

《JAVA程序设计》授课教案第一章概述授课题目Java语言概述学时安排4学时课程设计Java发展Java开发平台搭建JAVA程序分类应用程序开发过程教学目的学生认识Java发展历史及崛起的原因、掌握Java开发平台搭建、掌握Java应用程序开发过程。教学要求1、了解Java发展及程序分类2、掌握Java开发平台搭建3、掌握Java应用程序开发过程教学重点掌握Java开发平台搭建教学难点掌握Java开发平台搭建授课类型理论课、实训课授课场地教室教学方式讲授、演示、提问、讨论教辅设备投影仪教学内容引入我们交朋友时,除了要了解他的现在,还要了解他的过去,了解他的历史。才能较全面、较深刻认识他。在学习java的时候,我们也从它的历史入手。本章我们将介绍Java的历史、开发平台搭建及开发过程。2、Java的发展1991年4月8日,从工作站起家的Sun公司为了把市扩大到消费电子产品,成立了一个专门的工作小组,着手代号为Green的项目,目的是开发一个分布式代码系统,让人们可以把E-mail发送给电冰箱、电视机、空调等家用电器,对它们进行控制,同它们进行信息交流;这个系统还应当具有独立于软件平台的特征、网络操作功能强大,并容易被程序员们接受。基于这一目标,自然应当首选当时已经广为流行的C++进行开发。但是C++太过复杂,安全性也差、网络功能也达不到要求,最后不得不重新定义一套新的语言系统,于是便有了Oak(意为橡树)的问世。Oak一方面汲取了C++的有益成分,同时融进了网络应用特性,可以称得上是一种精巧而安全的语言了。可惜,Sun以它投标一个自认为比较合适的交互式电视项目时,却一败涂地,可怜的Oak几乎陷入困境。恰巧这时,MarkArdreesen的Mosaic(马赛克)和Netscape的巨大成功给Oak项目组成员带来了新的希望,他们重整旗鼓,对Oak进行了一次新的整合,并给了它一个据说来自几位小组成员喝Java(爪哇)咖啡时灵机一动想到的新名字-----Java。接着,他们在Sun公司首席执行官ScottMCnealy的支持下,用Java编制了HotJava浏览器,吹响了进军Internet的号角。Java由于与Internet的成功结合而很快风靡全球,计算机产业的许多大公司购买了Java的许可证,包括IBM、Apple、DEC、Adobe、HP、Oracle,以及最不情原的Microsoft。众多的软件开发商开始支持Java的软件产品。Java所特有的“writeonce,runanywhere”。的与平台无关性的概念,与Internet的异构网络互联一拍即合。它特别适合在网络开发中使用,这一优势直威胁到Wintel联盟的垄断地位,使得它成为面向对象开发工具中潜力巨大的一员。3、Java的基本特点1)简单性Java的简单性指的是Java的语法简单,Java实际上是C++的一个“纯净”版本。其中没有头文件、指针算法、结构、联合、操作符重载等较为复杂的部分。2)面向对象面向对象在过去30年已经证明了自身的价值,如今很难想象一个现代编程语言不是面向对象的。Java语言是一种面向对象的语言,这是Java语言的重要特点。3)分布式Java的网络能力强大而且易于使用。Java把打开套接字连接等繁琐的网络任务变得非常容易。4)健壮性Java编译器会检查出很多其它语言在运行时刻才显示出来的错误。5)跨平台性Java对其基本数据类型的大小及其算法都做了明确的规定。例如:int类型在Java中始终是32位的整数。字符串在Java中用标准的Unicode格式存储。4、Java开发环境的构建1)JDK简介SDK是SoftwareDevelopmentKit这几个单词的简称,是Sun公司发展的Java开发环境,是学习开发java程序最初使用的环境;读者可以从1.4.2下载。2)JDK安装①在http1.4.2地址下载JDK安装包。②下载的文件是已经被SUN公司打包的可执行文件。用户只需双击相应的文件出现图所示画面开始安装。用户可以根据提示一步一步安装完毕。3)环境变量设定设定环境变量的目的是为了能够正常使用所安装的Java开发包(JDK).主要包括两个环境:Path和Classpath。Path称之为路径环境变量,用来指定Java开发包中的一些可执行程序所在的位置Class称之为类路径环境变量,用来指定编译时需要的类。设定Path环境变量步骤如下:第一步:右击【我的电脑】,在弹出菜单中选择【属性】,出现如图所示的【系统特性】对话框。第二步:选择【高级】属性页,在该页面中有一个【环境变量】按钮,单击进入对话框,如图所示。图图第三步:编辑Path环境变量在图所示的系统变量中找到Path变量,然后单击【编辑】按钮,弹出图所示对话框,读者在【变量值】标签所示的编辑文本框的后面追加”;c:\\bin”(注意,引号不能作为值加入,c:\\bin是你安装JDK的目录,随你安装目录不同而变化)(2)设置ClassPath环境变量的步骤第一步:同Path环境变量设置相同,请参照图第二步:同Path环境变量设置相同,请参照图第三步:编辑ClassPath环境变量在图所示的Adiministrator用户环境变量中ClassPath变量,然后单击【编辑】按钮,弹出图所示对话框,读者在【变量值】标签所示的编辑文本框的后面追加”;c:\\lib\.;.;d:\javaprogram”(注意,引号不能作为值加入,c:\\lib\.;是你安装JDK的目录,随你安装目录不同而变化,”.”为当前目录,“d:\javaprogram”为Java文件存放目录)图5、Java应用程序开发过程1)编写源代码例1.3.1/****功能:输出HelloWorld!样字符*@author黎红星*@version**/publicclassHelloWorld{publicstaticvoidmain(String[]args){ "HelloWorld!");}}写完代码后,保存为2)编译源代码Java是解释型语言,在解释中只能识别字用Java编译器编译的节码。在JDK中,Java的编译器是。使用javac命令,就可以将Java源文件编译成字节码。对应于Java源文件里的每一个类,Javac都将生成一个与此类类名相同但后缀为.class的字节码文件,并将它们放在源文件的同一文件夹中。javac命令的一般格式为javac文件名.java3)运行位于Java安装目录的bin子目录中,称为Java解释器,用于对指定的字节码进行解释并加以执行。命令的一般格式如下:java文件名在本例中,其命令格式如下:javaHelloWorld讨论、思考题、作业:1.理解Java跨平台性2.在Java环境配置中,path、pathclass变量的作用。程序分为哪几类?写一Java应用程序,输出”HelloWorld!”参考资料(含参考书、文献等):Java程序开发教程清华大学出版社张基温网站实施情况及分析:学生能较好掌握开发环境配置及应用程序开发过程。第二章简单数据类型、运算符授课题目简单数据类型、运符算学时安排2学时课程设计常量和变量的概念各种数据类型的使用及转换运算符、表达式、优先级、结合性等概念教学目的学生理解常量、变量的概念、运算符、表达式、优先级、结合性等概念;掌握程序结构设计的三种基本结构,为以后深入学习打下基础。教学要求1、理解常量、变量的概念、运算符、表达式、优先级、结合性等概念2、了解数据类型的使用及转换教学重点常量、变量的概念、运算符、表达式、优先级、结合性等概念教学难点数据类型转换、结合性授课类型理论课、实训课授课场地教室教学方式讲授、演示、提问、讨论教辅设备投影仪教学内容引入人们学习开车时,首先要了解的是车子有哪些部件可以使用,哪些部件是车子保留不能使用以及每一个部件的作用。然而学习一门语言与学习车子类似,我们首先要了解有哪些数据类型可以使用、有哪些程序结构在开发过程中使用。这章作为Java程序的入门章节,我们将重点学习常量、变量的概念、运算符、表达式、优先级等基本概念以及程序设计的三种基本结构。案例:现在有柑子5个,苹果10个,请计算它们的总和并输出结果。程序清单:publicclassFruit{publicstaticvoidmain(Stringargs[]){005c000a000c十进制数形式,由数字和小数点组成,且必须有小数点,如,.123,23.,。

2.科学计数法形式。如:123e3或123E3,其中e或E之前必须有数,且e或E后面的指数必须为整数。实常数在机器中占64位,具有double型的值。对于float型的值,要在数字后加f或F,如12.3F,它在机器中占32位,且表示精度较低。(4)变量与常量变量:其值可以改变的量。如上面的numOranges、numApples等。学习变量时要注意的是变量的命名要符合标识符的命名规则。变量的定义及变量的初始化等相关知识的讲解。常量:其值不可改变的量是常量。注意常量的定义要用关键字final,如:finalintPI=3;则这里PI就是常量。在程序中如果试图改变PI的值则系统会给出错误信息。(5)运算符与表达式定义:运算符又称做操作符,是各种不同运算操作的符号化表示分类:算术运算符、关系运算符、逻辑运算符、位运算符、赋值运算符和条件运算符等算术运算符:算术运算符用于数值类型数据(整数或浮点数)的运算。注意:/、%、++、--四个特殊算术运算符。赋值运算:在赋值符“=”前加上其他运算符,即构成扩展赋值运算符,它将运算的结果直接存到左边的已命名变量中去。关系运算符:关系运算是用来比较两个数的大小,并返回布尔型值true或false。布尔运算符:布尔运算符用于进行布尔运算,运算的结果仍然是布尔型数值。布尔运算符常与关系运算符一起使用,作为流程控制语句的判断条件。注意:真值表的运用。&&”与“‖”是短路(Short-Circuit)逻辑运算符&”与“|”是非短路逻辑运算符(6)数据类型转换①隐含类型转换隐式转换(自动类型转换)允许在赋值和计算时由编译系统按一定的优先次序自动完成,通常,低精度类型到高精度的缺省类型转换由系统自动转换。例如:inti=20;longj=i;隐式转换从低级到高级的转换顺序如下:byte→short、int、long、float、doubleshort→int、long、float、doublechar→int、long、float、doubleint→long、float、doublelong→float、doublefloat→double②显示转换显示转换是将高精度数据类型转换到低精度数据类型,它是通过赋值语句来实现。(7)运算符的优先级别与结合方向优先顺序运算符结合性1.[]()左/右2!,~,++,――,typeof,new,void,delete右3*,/,%左4+,-左5<<,>>,>>>左6<,<=,>,>=左7==,!=,===(严格等于),!==(严格不等于)左8&左9^左10|左11&&左12||左13?:左14=,+=,―=,*=,/=,%=,<<=,>>=,>>>=,&=,^=,|=右讨论、思考题、作业:1.计算两个数的和、差、积、商2.调试并运行下列程序,分析输出结果publicclassDatetype{publicstaticvoidmain(Stringargs[]){bytea=30,b;doublec=,d;inti,k=100;d=a;b=(byte)k;i=(int)c;调试并运行下列程序,分析输出结果import.*;publicclassDeclareVarVariable{publicstaticvoidmain(Stringargs[]){byteb=043;shorts=0x43;inti=100;longl=0xffffL;charc='c';floatf=3.14F;doubled=;booleank=true;StringS="Thisisastring!";"字节型变量b="+b);"短整型变量s="+s);"整型变量i="+i);"长整型变量l="+l);"字符型变量c="+c);"浮点型变量f="+f);"双精度变量d="+d);"布尔型变量k="+k);"字符串类对象S="+S);}}参考资料(含参考书、文献等):Java程序开发教程清华大学出版社张基温网站实施情况及分析:学生能较好分析出上述思考题的结果,学习效果较好。java面向对象技术概述授课题目JAVA面向对象技术概述学时安排3课程设计捕猎程序教学目的掌握面向对象基本思想与方法教学要求掌握面向对象的基本概念教学重点面向对象思想和面向过程的思想有什么不同?面向对象中的重要概念教学难点面向对象思想和面向过程思想的区别授课类型理论课授课场地教室教学方式讲授、演示、提问、讨论教辅设备投影仪教学内容捕猎游戏假如猎人在森林里面打猎,那么有各种各样的猎物存在。应当怎样用程序来表示猎人注意到的以及抓到的猎物?面向过程的写法我们是如何表示的?思考:应当怎样用程序来表示猎人注意到的以及抓到的猎物?在面向对象的设计思想当中我们应当怎样来定义这些动物?是否需要对每一种动物都分别重复的定义?又怎么表示打猎的猎人?面向对象面向对象技术是一种软件开发和程序设计技术。面向对象方法面向对象方法是一种运用对象,类,封装,继承,多态和消息等概念来构造,测试,重构软件的方法。对象对象是封装了数据和操作的程序块。类类是具有相似内部状态和运动规律的实体(对象)的集合。面向对象程序设计的三大特点封装性通过对象的封装,实现了模块化和信息隐藏;通过对类的成员施以一定的访问权限,实现了类中成员的信息隐藏。2.继承性继承是可以让某个类型的对象获得另一个类型的对象的属性的方法。它支持按纪分类的概念。3.多态性多态性体现在两个方面:由方法重载实现的静态多态性(编译时多态)和方法覆盖实现的动态多态性(运行时多态)。讨论、思考题、作业:思考:面向对象编程在编程思想上对面向过程的思想做了什么改变?参考资料:《java2入门基础》编著:IvorHorton,中国电力出版社《Java语言程序设计》第2版编著:殷兆麟等,高等教育出版社实施情况及分析:学生带着问题进入学习过程当中,每次学习都能够解决一个问题,并在上机实践中加以运用。学习积极性高,学习状况良好。类、对象与封装授课题目类、对象与封装学时安排2课程设计捕猎程序教学目的类、对象与封装的基本概念教学要求掌握类的声明,定义,类和对象的关系以及简单操作。教学重点类与对象类的声明,定义教学难点类的声明,定义授课类型理论课授课场地教室教学方式讲授、演示、提问、讨论教辅设备投影仪教学内容类和对象的关系类实例化就成为对象。类是具有相同属性的对象的集合。具体实现最开始给出的实例。1.类声明 class类名[extends父类名][implements接口列表]{类体}2.类中含有两种成员:成员变量,成员方法。成员变量的声明方式如下:public|protected|private][static][final]type变量名;建子类格式:classSubClassextendsSuperClass{…}2.注意:子类不能继承父类中访问权限为private的成员变量和方法。Java不支持多重继承,即一个类从多个超类派生的能力。3.思考:我们是否还需要像面向过程的方法一样对每一种动物都重复的进行定义?如果采用继承的方法能够带来什么样的改变4.实现动物类当中的猫和狗两个子类,他们都具有父类动物类的属性。讨论、思考题、作业:1、实现捕猎游戏中的猫和狗两个子类,由动物类继承而来参考资料:《java2入门基础》编著:IvorHorton,中国电力出版社《Java语言程序设计》第2版编著:殷兆麟等,高等教育出版社实施情况及分析:学生带着问题进入学习过程当中,每次学习都能够解决一个问题,并在上机实践中加以运用。学习积极性高,学习状况良好。异样处置授课题目异常处理学时安排4课程设计主要介绍单元设计的要求教学目的Java异常处理机制讲授异常捕捉、异常处理、清理异常的方法教学要求理解异常的概念了解异常类及其层次关系熟练掌握常用的标准Java异常类熟练掌握抛出异常、声明抛出异常、定义异常的方法创建自定义的异常类型教学重点1、Java异常处理机制2、掌握抛出异常、声明抛出异常、定义异常的方法教学难点1、Java异常处理机制2、掌握抛出异常、声明抛出异常、定义异常的方法授课类型理论课授课场地教室教学方式讲授、演示、提问、讨论教辅设备投影仪教学内容引入异常的概念通过程序演示数学计算中除数为了0时产生的错误信息,引入抛出异常的概念。我们都希望自己的程序不包含任何错误,也都希望我们的程序要访问的资源总是可用。然而现实的情况可能和所期望的恰恰相反:程序中包含有“bug”,在运行时会出现各种错误;要访问的资源不存在或是存在但不能访问。Java提供了强有力的异常处理机制来应对可能出现的各种异常情况。本章重点讲解Java异常处理机制及如何处理抛出异常、声明抛出异常、定义异常的方法。通过提问(讨论式、启发式提问)和比较归纳,处理异常的必要性和重要性作为一名合格优秀的程序员,必须认识到在程序中处理异常的重要性。Java运用面向对象的方法进行异常处理,把各种不同的异常进行分类,并提供了良好的接口。这种机制为复杂程序提供了强有力的控制方式。同时这些异常代码与“常规”代码的分离,增强了程序的可读性,编写程序时也显得更为灵活。那么,我们采用错误代码和异常处理相结合的方式到底有哪些优越性呢?把错误代码与常规代码分开可以在catch中传播错误信息可以对错误类型分组方便定位错误,维护要写出友好,健壮的程序,灵活地运用Java程序语言的异常处理机制,须从以下几个角度来认识异常:异常类及分类、捕获异常、处理异常及抛出异常。异常类及分类在Java中,异常也是被视为对象,所有的异常都继承于Throwable类,Throwable类中有一个String类型的变量,它保存的是异常对象的一些说明信息,该信息可以用来识别所抛出的异常。Throwable类分别有两个子类,分别是:Exception类和Error类,但对于软件开发者来说,大多数遇到的异常对象都属于Exception类及其相应的子类,这是因为Exception类型的异常是由编写的代码所引起的,而Error类型的异常则是由Java虚拟机自身或者虚拟机与代码之间的连接引起的。以下给出一个简化的Java异常继承关系图。ErrorErrorThrowableExceptionIOExceptionRuntimeException用户自定义异常Exception类的子类的分类:Exception类的子类可以分为两种类弄,即checked和unchecked。其中unchecked类型的异常是指那些没有被检查出来的异常,它的抛出一般是由代码编写者的疏忽大意引起的。checked类型的异常指的是那些代码编写没有问题,但是在代码的实际运行期间,由于代码所处环境的影响而抛出的异常。学习异常处理关键字:try、catch、finally、throws和throw。1)、通过对比分析程序和,引入try——catch语句,并阐述Java中异常的处理机制。2)、通过走读中的代码,引导学生了解try——catch语句的执行步骤。3)、如果程序出现非常严重的异常而导致程序完全退出,势必会给系统带来一些不确定的因素,Java提供了finally语句,不管抛出异常与否,都必须执行finally语句块,通常在finally语句中可以进行资源的清除工作,如关闭打开的文件等。分析程序代码,引出throws和throw异常关键字,并阐述其用法:4)、throws总是出现在一个函数头中,用来标明该成员函数可能抛出的各种异常。5)、throw总是出现在函数体中,异常并不是系统出错产生,而是人为地抛出的异常。程序会在throw语句后立即终止执行。创建自定义的异常类型当程序员为提供一些特定的功能用Java类时,往往需要保证类之间有良好的关系,而且类之间的接口易于理解和实现。对于异常类一样,可以定义新的异常类。创建自己的异常类更便于维护和管理。通常采用Exception作为异常类的父类。通过再次分析程序代码,分析自定义异常抛出处理过程。知识点讲解及程序代码分析1)、源代码publicclassExceptionExam{publicstaticvoidmain(String[]args){inti=0;i=3/i;}}2)、源代码publicclassExceptionExam1{publicstaticvoidmain(Stringargs[]){inti,a;try{;}}staticvoidtestRuntime()throwsMyArithException{try{为了实现交互,必须进行事件的处理.问题提问GUI中的容器有哪些类型?AWT中的组件都有那些?知识点讲解用户界面(UserInterface),简称UI,Java的图形用户界面的最基本组成部分是组件(Component),组件是一个可以以图形化的方式显示在屏幕上并能与用户进行交互的对象,例如一个按钮,一个标签等。组件不能独立地显示出来,必须将组件放在一定的容器中才可以显示出来。本节主要介绍如何创建各种UI组件。案例:创建用户登陆界面现代的用户倾向于使用可以由鼠标方便操作的图形用户界面(GUI-GraphicalUserInterface)程序。本章的内容就是介绍如何使用JFC(JavaFoundationClass)中的Swing组件(Component)来构建GUI应用程序用户界面设计原则使用图形界面GUI(GraphicsUserInterface)字符界面—采用命令行方式与用户交互。图形界面—用多种媒体显示信息,用直观、方便的GUI标准组件来接收命令。控制权在用户界面与操作的风格一致性宽容(容错)性简洁与美观并重界面元素容器是用来组织其他界面成分和元素的单元。可以形成容器的层次,构筑复杂结构Window(Frame、Applet、Dialog)组件是图形用户界面的基本单位,它里面不再包含其他的成分。GUI组件是图形用户界面标准化的结果。GUI组件的作用是完成与用户的交互。用户自定义成分文字、图形、图象…不能像标准组件一样被系统识别和承认,只起装饰作用。不能响应用户的动作,不具有交互功能。Containers容器组件Window——不需要其他组件支撑,独立显示。FrameDialog–没有菜单条,不能改变大小Panel——必须放在Window组件中(或Web浏览器窗口)才能显示。它为一矩形区域,在其中可摆放其他组件,可以有自己的布局管理器。基本方法add(Componentcomp)将指定组件放到容器中add(Componentcomp,intindex)remove(Component

comp)删除指定组件setLayout(LayoutManager

mgr)设置容器布局Component类可显示在屏幕上的图形对象,可与用户交互。方法:add(PopupMenu

popup)加一弹出菜单addFocusListener(FocusListener

l)将发生在本组件上的事件注册给监听者,以进行事件处理。setSize(int

width,int

height)设置组件尺寸paint(Graphics

g)重画组件setFont(Font

f)设置组件字体setBackground(Color

c)设置组件背景色setForeground(Color

c)设置组件前景色Font类设计字体显示效果Fontmf=newFont(String字体,int风格,int字号);字体:TimesRoman,Courier,Arial等风格:三个常量,,字号:字的大小(磅数)设置组件当前使用的字体:setFont(Fontfn)获取组件当前使用的字体:getFont()Color类构造函数1(设置颜色)Colorc=newColor(int

red,int

green,int

blue)范围:0~255newColor(200,200,200)newColor(255,0,100)构造函数2Colorc=newColor(intrgb)兰色:0~7位绿色:8~15位红色:16~23位颜色常量值publicstaticfinalColorblack,,,Color.red常用组件1.标识(Label)语法格式:Label(Strings)功能:构造一个显示字符串s的标识。2.按钮(Button)语法格式:Button(Strings)功能:构造一个以字符串s为标识的按钮。

3.复选框(Checkbox)语法格式:Checkbox(Strings)功能:构造一个以字符串s为标识的复选框条目,未被选中。4.单选按钮(RadioButtons)语法格式:CheckboxGroup()功能:构造一个条目组。5.选择菜单(ChoiceMenu)语法格式:Choice()功能:构造一个选择菜单。说明:构造完之后,再使用Choice类中的addItem方法加入菜单的条目。6.列表框(ScrollingList)语法格式:List(intn,booleanb)功能:构造一个有n个列表项的列表框,并根据b的值决定是否允许多选。7.单行文本输入框(TextField)语法格式:TextField(inti)功能:构造一个字符串长度为i单行文本输入框8.多行文本输入框(TextArea)语法格式:TextArea(inti,intj)功能:构造一个多行文本输入框,行数为i,列数为j讨论、思考题、作业:1.简答题(1)UI组件包括哪些?(2)写出创建一个指定长度、指定初始内容的单行文本输入框的语句。(3)简述创建复选按钮时和创建单选按钮时的区别。2.操作题试设计一个学校的学生学籍资料录入界面,内容自定,尽量使用各种UI组件。参考资料(含参考书、文献等):实施情况及分析:良好GUI编程基础------布局治理授课题目GUI编程基础------布局管理学时安排2学时课程设计本讲主要讲述GUI界面设计的事件处理教学目的掌握GUI中的事件处理教学要求学会GUI中的事件处理教学重点事件处理教学难点事件处理过程授课类型理论课授课场地教室教学方式讲授、演示、提问、讨论教辅设备投影仪教学内容1、案例下面是利用不同的UI组件所创建的某公司的员工信息录入界面的案例。如下图所示2、分析:本按例是一个简单的UI设计,同学们可以看的出来,界面看起来很混乱,java中为GUI设计准备了布局管理和事件处理等操作3、提问如何使界面条例清晰?4、知识点讲解 为了实现跨平台的特性并且获得动态的布局效果,Java将窗体内的所有组件安排给一个“布局管理器”负责管理,当窗口移动或调整大小后组件如何变化等功能授权给对应的窗体布局管理器来管理。AWT提供三种最基本的布局管理器可供选择:

1.流式布局管理器(FlowLayout);2.网格布局管理器(GridLayout);3.边框布局管理器(BorderLayout)修改前面的代码使界面看起来美观,简洁,整齐容器的组件布局布局管理器(layoutmanager)负责确定组件在容器中的位置和大小。调用容器的setLayout(布局管理器对象)方法,为容器指定某种布局管理器的一个对象。当容器需要定位组件和确定组件大小时,就会给布局管理器对象发消息,让它完成该项工作。直接管理组件调用容器的setLayout(null)方法,关闭布局管理器。调用每一个组件的setLocation()方法决定组件位置。调用每一个组件的setSize()方法决定其大小。直接管理组件将失去平台无关性。布局管理器种类FlowLayout:组件在一行中从左至右水平排列,排满后折行BorderLayout:北、南、东、西、中GridLayout:以行和列的网格形式安排组件GridBagLayout:更复杂、功能更强的网格布局CardLayout:每一个组件作为一个卡片,容器仅显示多个卡片中的某一个确定容器布局缺省的布局管理器Window、Frame、Dialog——BorderLayoutPanel、Applet——FlowLayout:选择布局管理器的方法建立布局管理器类的对象利用容器的setLayout为容器指定布局(即指定一个布局管理器的对象)例:将myFrame布局设定为FlowLayout类型(newFlowLayout());FlowLayout布局管理器构造函数:FlowLayout();FlowLayout(intalign,inthgap,intvgap);align:对齐方式:LEFTCENTERRIGHThgap:组件水平间距(象素)vgap:组件垂直间距无参数的构造函数创建的FlowLayout对象,其对齐方式为CENTER居中方式,组件间的横纵间距都为5个像素。Framef=newFrame("FlowLayout");(400,300);CardLayout布局管理器将每一个组件视为一张卡片,同一时刻只能显示一个组件。setLayout(newCardLayout())CardLayout方法(按序指定组件)first(Container

parent)last(Container

parent)previous(Container

parent)next(Container

parent)CardLayout方法(按名显示组件)addLayoutComponent(String

name,Component

c)show(Container

parent,String

name)讨论、思考题、作业:1。简答题(1)常用的布局管理器有哪些?(2)简述3种布局版面之间的区别和它们各自的特点2.操作题参考上机实践中的例子,设计一个使用边框布局管理的学生资料录入界面,内容自定。参考资料(含参考书、文献等):实施情况及分析:良好GUI编程基础------事件处置授授课题目GUI编程基础------事件处理学时安排2学时课程设计本讲主要讲述GUI界面设计的事件处理教学目的掌握GUI中的事件处理教学要求学会GUI中的事件处理教学重点事件处理教学难点事件处理过程授课类型理论课授课场地教室教学方式讲授、演示、提问、讨论教辅设备投影仪教学内容案例本按例要求模拟计算器,如下图所示分析:本案例子是界面布局的一个复习,加入新的内容事件处理,点击加法运算,怎么会计算机直接运算,通过本讲的学习,要掌握事件源,事件处理过程,事件分类.预习提问什么事件源?事件的处理过程是什么?常用的事件都有哪些,他们所对应的事件源有哪些?知识点讲解 在系统中有某些我们所关心的事情,如:鼠标移动了,用户按下了某个按键……等发生了,然后系统便通知我们去处理这些事情。这样的概念在一般采用窗口用户界面环境的操作系统中,是十分常见的。而通过这些事件,AWT组件与用户或AWT构件之间就可以进行某种通讯。本节将介绍鼠标和键盘的各种事件。案例:计算器事件及处理机制事件类ActionEvent类:存放这个事件的细节。()返回事件发生的对象(名)()返回按扭名。ActionListener接口publicvoidactionPerformed(ActionEvente)图形用户界面例import.*;importclassa{publicstaticvoidmain(Stringargs[]){MyFrameform1=newMyFrame();}}classMyFrameextendsFrame{MyFrame(){super("窗口标题");setSize(200,100);setFont(newFont("TimesRoman",,20));setLayout(newFlowLayout());Buttonb=newButton("close");add(b);(newBprocess());setVisible(true);}}classBprocessimplementsActionListener{publicvoidactionPerformed(ActionEvente){(0);}}监听者类某个类可以兼职也可以专职做这件事(实现监听者接口)。一个类若实现一个接口,必须实现接口的全部方法。例如:ActionListener接口只有一个方法:voidactionPerformed(ActionEvente)实现接口的类可以是:一般类内部类匿名类事件处理有关问题1)有哪些事件类?2)每个事件类的监听者接口?3)每个监听者接口规定的方法?4)多方法的监听者接口的适配器(实现接口的抽象类)是什么?5)组件的事件委托(注册)方法?窗口事件关闭窗口框时引发WindowEvent事件委托addWindowListener(newWclose());定义监听者类classWcloseimplementsWindowListener{ publicvoidwindowClosing(WindowEvente){ (0);}WindowListener类有7个方法,必须都实现WindowAdapter接收窗口事件的抽象适配器类,用空内容有WindowListener接口的所有方法classWcloseextendsWindowAdapter{…}ActionEvent事件引发原因:单击按扭,双击列表框中选项,选择菜单项,文本框中的回车事件监听接口:ActionListener接口方法:actionPerformed(ActionEvente)组件注册该事件方法:addActionListener(监听者)TextEvent事件引发原因:文本框或文本区域内容改变事件监听接口:TextListener接口方法:textValueChanged(TextEvent

e)组件注册该事件方法:addTextListener(监听者)ItemEvent事件引发原因:改变列表框中的选中项改变复选框选中状态改变下拉选单的选中项事件监听接口:ItemListener接口方法:itemStateChanged(ItemEvent

e)组件注册该事件方法:addItemListener(监听者)AdjustmentEvent事件引发原因:操作滚动条改变滑块位置事件监听接口:AdjustmentListener接口方法:adjustmentValueChanged(AdjustmentEvent

e)组件注册该事件方法:addAdjustmentListener(监听者)KeyEvent事件引发原因:敲完键(KEY-TYPED)按下键(KEY-PRESSED)释放键(KEY-RELEASE)事件监听接口:KeyListener接口方法:keyPressed(KeyEvent

e)键已被按下时调用keyReleased(KeyEvent

e)键已被释放时调用keyTyped(KeyEvent

e)键已被敲完时调用KeyEvent方法:charch=();事件监听适配器(抽象类)KeyAdapter组件注册该事件方法:addKeyListener(监听者)MouseEvent事件引发原因:(鼠标作用在一个组件上)鼠标事件:鼠标键按下,鼠标键抬起,单击鼠标,鼠标光标进入一个组件,鼠标光标离开一个组件。鼠标移动事件:鼠标移动,鼠标拖动鼠标事件监听接口1:MouseListener接受鼠标事件该接口方法:mouseClicked(MouseEvent

e)mouseEntered(MouseEvent

e)鼠标光标进入一个组件mouseExited(MouseEvent

e)鼠标光标离开一个组件鼠标事件监听适配器(抽象类)MouseAdapter鼠标事件监听接口2:MouseMotionListener接受鼠标移动事件该接口方法:mouseMoved(MouseEvent

e)鼠标光标在组件上移动mouseDragged(MouseEvent

e)用鼠标拖动一个组件鼠标移动事件监听适配器MouseMotionAdapter组件注册鼠标事件方法:addMouseListener(监听者)组件注册鼠标移动事件方法:addMouseMotionListener(监听者)MouseEvent方法()=1单击=2双击Point()取鼠标光标位置Int()int()取鼠标光标位置()=鼠标左键=鼠标右键WindowEvent事件引发原因:有关窗口操作引发的事件事件监听接口WindowListener接口方法windowActivated(WindowEvent

e)激活窗口windowClosed(WindowEvent

e)调用dispose方法关闭窗口后。windowClosing(WindowEvent

e)试图利用窗口关闭框关闭窗口windowDeactivated(WindowEvent

e)本窗口成为非活动窗口windowDeiconified(WindowEvent

e)窗口从最小化恢复为普通窗口windowIconified(WindowEvent

e)窗口变为最小化图标windowOpened(WindowEvent

e)当窗口第一次打开成为可见时接口适配器WindowAdapter注册事件方法addWindowListenerFocusEvent事件引发原因:组件获得焦点组件失去焦点事件监听接口FocusListener接口方法:focusGained(FocusEvent

e)组件获得焦点时调用focusLost(FocusEvent

e)组件失去焦点时调用接口适配器:FocusAdapter组件注册该事件方法:addFocusListenerTextEvent事件引发原因:当组件(如文本框)文本改变时引发事件监听接口:TextListener接口方法:textValueChanged(TextEvent

e)组件注册该事件方法:addTextListenerComponentEvent事件引发原因:当组件移动、改变大小、改变可见性时引发事件监听接口:ComponentListener接口方法:componentHidden(ComponentEvente)组件隐藏componentMoved(ComponentEvent

e)组件移动componentResized(ComponentEvent

e)组件改变大小componentShown(ComponentEvent

e)组件变为可见接口适配器ComponentAdapter组件注册该事件方法:addComponentListenerContainerEvent事件引发原因:当容器内增加或移走组件时引发事件监听接口:ContainerListener接口方法componentAdded(ContainerEvent

e)容器内加入组件componentRemoved(ContainerEvent

e)从容器中移走组件接口适配器ContainerAdapter容器注册该事件方法:addContainerListener讨论、思考题、作业:1.简答题(1)简述在Java中关于鼠标的事件主要有哪几种?(2)列出代表键盘上的四个方向键的类变量。2.操作题试设计一个程序,模拟光标的移动。(提示:用字符“_”代表光标,利用键盘上的方向键事件来控制字符“_”的坐标变化,实现上下左右移动的效果。)参考资料(含参考书、文献等):实施情况及分析:良好GUI编程基础------高级GUI授课题目GUI编程基础------高级GUI学时安排2学时课程设计本讲主要讲述GUI中的Swing的内容,包括JTable,JTree,JMenu,密码框教学目的掌握JTable,JTree,JMenu,密码框的使用教学要求学会使用JTable,JTree,JMenu,密码框的使用教学重点JTable,JTree,JMenu,密码框教学难点JTree事件处理过程授课类型理论课授课场地教室教学方式讲授、演示、提问、讨论教辅设备投影仪教学内容案例本按例学生信息管理系统界面,如下图所示分析:本例子是为了进行我们学生成绩管理系统进行界面设计,该界面采用的是GUI中的Swing设计的,包JMenu,JTtable,JTree,通过该讲的学习,重点让大家能够熟练的使用Swing中的组件预习提问菜单中有那些选项,它们之间的关系是什么?JTree中事件如何进行处理?知识点讲解 常用组件标签(JLabel)标签(JLabel)通常是用来标识另外一个组件的含义。以在标签上显示文字、图象或是文字图象的组合。 JLabellabText=newJLabel(“文本标签”); ("文本标签"); ImageIconicon=newImageIcon("image/");JLabellabImage=newJLabel(icon);(aIcon);密码框密码框实际上是一种特殊类型的文本框,用户可以向其中输入文本并加以编辑。和文本框不同的是,向密码框中输入文本时,显示的不是实际输入的文本,而是特殊的回显字符(通常是'*')。可以使用setEchoChar(charc)方法来改变缺省的回显字符。需要注意的是,取得文本框中的文本时,使用方法getText(),该方法返回的是一个String类型的对象;而要取得密码框中的文本,使用方法getPassword(),该方法返回的是一个char数组。例如,创建了一个密码框:JPasswordFieldtxtPwd=newJPasswrodField(20);设定该密码框的回显字符为'#':('#');取得密码框中的内容:char[]pwd=();也可以方便地将char数组转化为String类型的对象:StringpwdStr=newString());菜单菜单也是一种常用的GUI组件,菜单采用的是一种层次结构,最顶层是菜单栏(JMenuBar);在菜单栏中可以添加若干个菜单(JMenu),每个菜单中又可以添加若干个菜单选项(JMenuItem)、分隔线(Separator)或是菜单(称之为子菜单)见Tree_menu弹出式菜单弹出式菜单(JPopupMenu)是一种特殊的菜单,和普通菜单的区别在于其不固定在菜单栏中,而是可以四处浮动的。下面的语句创建了一个弹出式菜单:JPopupMenupopup=newJPopupMenu();与向菜单中添加菜单选项、分隔线或是子菜单一样,使用同样的方法向弹出式菜单中添加内容。用户可以通过点击某个特殊的鼠标键(称为触发器)来触发弹出式菜单。例如,在Windows操作系统上,一般是鼠标右键。为此,应用程序中应该监听弹出式菜单的父组件的鼠标事件:当有鼠标事件发生时,使用isPopupTrigger()方法来判断是否为弹出式菜单的触发器;如果是,则在该父组件上显示出弹出式菜单。同样以图6.4.13所示意的弹出式菜单为例,该菜单的父组件是一个显示公司徽标的标签labLogo,当用户在该标签上右击鼠标时,弹出式菜单出现。下面的代码实现了上述功能:(newMouseAdapter(){publicvoidmouseReleased(MouseEvente){If()){(labLogo,(),()); } } });工具条有些菜单选项的使用频率较高,每次使用都要打开菜单,效率较低。为此,可以在工具条(JToolBar)中提供与这些菜单选项相对应快捷按钮,以提高用户的效率。工具条中通常是一些带有图标的按钮(如图6.4.14所示),当然也可以是其它类型的GUI组件,例如组合框等等。通常,工具条所提供的操作是菜单所能提供操作的一个子集,目的是能够快速访问那些使用频率高的操作。工具条通常被置于布局为BorderLayout的容器中。在例6.4.8中,工具条被置于布局为BorderLayout的一个面板中。工具条还有一个特点:可以被拖动到所在容器其它边界(图,甚至脱离其所在的容器(图。工具条的使用生成一个工具条对象,可以使用语句:JToolBartoolbar=newJToolBar();还可以在生成工具条时,指明工具条的标题。这样,当工具条脱离所在容器时,可以在自己的标题栏显示标题(图6.4.16):JToolBartoolbar=newJToolBar("颜色工具条");向工具条中添加组件,使用add方法:(btnBlue);(btnYellow); 缺省情况下,组件是按照水平方式逐个添加入工具条的,也可以在生成工具条时指明以垂直方式来添加组件:JToolBartoolbar=newJToolBar;如果希望工具条不能移动,可以使用setFloatable方法来设置:(false);当工具条中的按钮上只显示图标时,用户可能不能确切知道各个按钮的具体含义。可以使用工具提示解决这个问题:("面板置为黄色");对话框对话框是用户和应用程序进行交互(对话)的一个桥梁:对话框可以用于收集用户的输入数据传递给应用程序,或是显示应用程序的运行信息给用户。对话框分为模式(modal)和非模式两种。模式对话框处于可见状态时,用户将不能与应用程序的其它窗口进行交互,而非模式对话框则没有此限制。Java中提供了一个类JOptionPane用于创建简单的模式对话框,如果希望创建非模式对话框或是自定义对话框可以使用JDialog。选项对话框JOptionPane类中提供了4种静态方法,用以显示4种常用的对话框:showMessageDialog消息对话框showInputDialog输入对话框showConfirmDialog确认对话框showOptionDialog选项对话框通过观察右侧的对话框可以发现,该对话框主要由如下几个部分构成:图标、消息以及按钮。先来看一下图标,系统本身提供了如下四种图标:类JOptionPane中定义了如下五个常量:6.4.24答题(1)简述AWT和Swing的区别和联系?(2)Swing的组件有那些。2.操作题试设计一个程序,仿照学生成绩管理界面自由发挥编写一个界面参考资料(含参考书、文献等):实施情况及分析:良好多线程授课题目多线程学时安排6学时课程设计网络聊天系统教学目的认识线程的机制、线程的操作和使用教学要求理解定制线程类、继承线程类、线程的生命周期教学重点线程的机制、线程的生命能周期教学难点线程的应用授课类型理论课、实验课授课场地教室、实验室教学方式讲授、演示、提问、讨论教辅设备投影仪教学内容引入各位!想象以下这个场景:目前大多数的计算机游戏使用图象和声音,但是各位是否注意到游戏的图象、你的得分、和游戏的音乐是在同时进行?想象这样一个情形,你看见屏幕先变化,然后再更新你的得分,最后你听到声音!一个游戏在进行时能同时拥有所有这些元素。更专业一点的说,程序此时已经分成了三个子单元,每个单元由线程来处置。经验:在解释问题陈述之前,应首先确立多线程应用的需要。区分Thread类和Runnable接口。解释线程的生命周期(尤其是非运行状态)。注意:阐明在Java中,线程是由JVM管理的。另外,虽然用户程序是多线程的,可实际上任一时刻只有一个线程在运行。由于分配给每一个线程的时间片非常短,因此看上去多个线程似乎是在同时运行。知识点讲解及程序代码分析什么是线程与进程 进程:简单来说就是一个程序在给定活动空间和初始条件下,在一个处理机上的执行过程。可以简单的理解为进程就是一个正在运行的程序。 线程:一个线程是一个程序内部的一个顺序控制流。即:一个或多个线程组成一个进程。线程与进程的区别: 线程与进程的区别主要有以下两点:多个进程的内部数据和状态是完全独立的,而多线程是共享一块内存空间和一组系统资源,有可能互相影响。线程本身的数据通常只有寄存器数据,以及一个程序执行时使用的堆栈,所以线程的切换比进程切换的负担要小。线程本质上就是一小部分独立的代码,处理器将其与其他线程同时运行。线程不一定是整个程序(处理多线程时,一般将程序称为进程),因为进程可以根据需要创建很多线程。一个线程的例子publicclassCurrentThread{ publicstaticvoidmain(Stringargs[]) { ThreadthisThread=(); try { for(intcounter=0;counter<10;counter+=2) { (1000); } } catch(InterruptedExceptione) { "hi!Iwasinterrupted"); } }}在上面的应用程序中,当前线程用CurrentThread()方法获得。每次线成打印计数器的值,线程被设为1000毫秒(1秒)。线程可以引发异常如果有另一个线程中断睡眠。因此,sleep()方法被保护在try块里。输出结果:定制线程类:实现线程最重要的方法是实现其中的run方法,run方法决定了线程所做的工作。可以使用两种方法来定制线程类提供

RUN方法:继承线程类Thread实现Runnable继承线程类Thread 类用于在多线程应用程序构造和访问单个多线程,它支持许多方法获得有关线程的活动信息,线程的设置和检查属性,引起线程等待,中断或破坏的信息。由扩充Thread类你能使应用程序和类运行在独立的多线程。 Java线程的生命周期每个线程都是和生命周期相联系的,一个生命周期含有多个状态,这些状态间可以互相转化。Java的线程的生命周期可以分为4个状态;创建(new)状态;可运行(runnable)状态;不执行(notrunnable)状态;消亡(dead)状态。如下图描述:线程中断我们已经知道,当线程的run方法运行结束,该线程也就自然终止。虽然也可以调用线程的stop方法来强制杀死一个线程,但该方法是不安全的,因此不推荐使用。Java中还提供了interrupt方法用来中断一个线程。当调用一个线程的interrupt方法时,即向该线程发送一个中断请求,并将该线程的“interrupted”状态值置为true线程的同步当两个线程需要分享数据,你必须保证一个线程不会改变另一个线程使用的数据。例如,如果程序有两个线程,一个从文件读你的工资而另一个试着更新工资,就可能发生数据错乱,JAVA用同步的方法或同步的语句允许你对等多线程操作。 线程的同步用synchronized关键字说明的方法能访问对等存取的对象。在给定的时间片你能为对象调用一个同步方法。这防止在多线程里同步方法冲突。所有对象和类与监督程序有关。监督程序控制同步方法访问对象或类。它保证只有一个线程在任何给定的时间片里访问资源。同步方法在调用该对象时获取对象的监督程序。当执行同步方法时,对象被锁住以至不能调用其他同步方法。一旦方法执行完,监督程序自动释放。当同步方法执行某种方法(如wait()),监督程序也释放。与同步方法有关的线程变得不可运行直到满足等待条件。当等待条件满足,线程必须获取对象的监督程序以便成为可运行的。下列代码显示同步方法和对象监督程序如何被多线程用于对等访问普通对象的。importMyThreadextendsThread{ staticStringmessage[]={"l","like","to","java"}; publicMyThread(Stringid) { super(id); } publicvoidrun() { (getName(),message); } voidwaiting() { try { sleep(1000); } catch(InterruptedExceptione) { "Interrupted"); } }}classSthread{ publicstaticsynchronizedvoiddisplayList(Stringname,Stringlist[]) { for(inti=0;i<;++i) { MyThreadthread=(MyThread)(); (); } }}classThreadtest{ publicstaticvoidmain(Stringargs[]) { MyThreadthread1=newMyThread("Thread1:"); MyThreadthread2=newMyThread("Thread2:"); ();理层2.数据链路层3.网络层4.传输层5.会话层6.表示层7.应用层其模型如图:3、协议(1)、IP(InternetProtocol)协议IP协议用于管理客户端和服务器端之间的报文传送。IP协议是所有Internet协议的基石,IP协议是一个面向包的协议,是无连接的。IP协议已经成为世界上最重要的网际协议。例如:、TCP(TransmissionControlProtocol)协议传输控制协议(TCP)提供了可靠的报文流传输和对上层应用的连接服务,TCP使用顺序的应答,能够按需重传报文。TCP在两个或多个主机之间建立面向链接的通信。TCP支持多数据流操作,提供数据流控制和错误控制,甚至完成对乱序到达报文的重新排序。(3)、UDP(UserDatagramProtocol)协议用户数据报协议(UDP)是IP协议的另一个主机到主机层协议。UDP提供了一种基本的、低延时的称为数据报的传输。UDP的简单性使UDP不适合于一些应用,但对另一些更复杂的、自身提供面向链接功能的应用却很适合。其它可能使用UDP的情况包括:转发路由表数据交换、系统信息、网络监控数据等的交换。这些类型的交换不需要流控、应答、重排序或任何TCP提供的功能。4、网络地址在网络中有成千上万台计算机,每台计算机都有一个专用的地址,我们称之为网络地址。网络地址又称为IP地址,它由4组0到255的数字组成,每组数字由下圆点“·”隔开。例如:地址也有缺点:一般人很难理解和记住这组没什么意思的数字。因此又为每台计算机起个有意义的名字,称为主机名(HostName)。上面的那组IP地址为例,其主机名为:、端口在网络技术中,端口(Port)大致有两种:(1)、物理意义上的端口。比如,ADSLModem、集线器、交换机、路由器用于连接其它网络设备的接口,如RJ-45端口、SC端口等等。(2)、逻辑意义上的端口。一般是指TCP/IP协议中的端口,端口号的范围从0到65535。比如,用于浏览网页服务的80端口,用于FTP服务的21端口等等。逻辑意义上的端口可分为3大类:公认端口(WellKnownPorts):从0到1023,这些端口紧密绑定于一些服务。通常这些端口的通讯明确表明了某种服务的协议。注册端口(RegisteredPorts):从1024到49151。它们松散地绑定于一些服务。也就是说有许多服务绑定于这些端口,这些端口同样用于许多其它目的。动态和/或私有端口(Dynamicand/orPrivatePorts):从49152到65535。理论上,不应为服务分配这些端口。实际上,机器通常从1024起分配动态端口6、套接字套接字(Socket)是程序与网络间的一种接口,大部分的网络应用程序都是点对点的(point-to-point),所谓的点就是服务器端和客户端所执行的程序。Socket在应用程序中创建,通过一种绑定机制与驱动程序建立关系,告诉自己所对应的IP和端口号。此后,应用程序送给Socket的数据,由Socket交给驱动程序向网络上发送出去。计算机从网络上收到与该Socket绑定的IP和端口号相关的数据后,由驱动程序交给Socket,应用程序便可从该Socket中提取接收到的数据。网络应用程序就是这样通过Socket进行数据的发送与接收的。如下图TCP程序设计Java中的TCP网络程序设计是指利用Socket类,编写通信程序。服务器端套接字等待客户机的连接请求,并创建新的套接字使其与客户机的套接字连接,而本身继续等待其他客户机的连接请求。如图所示。8.2.1Socket通信在Java中,基于TCP协议实现网络通信的类有两个:在客户端的Socket类和在服务器端的ServerSocket类。在服务器端通过指定一个用来等待的连接的端口号创建一个ServerSocket实例。在客户端通过规定一个主机和端口号创建一个socket实例,连到服务器上。ServerSocket类的accept方法使服务器处于阻塞状态,等待用户请求1、Socket类(1)构造方法:publicSocket(

host,int

port)publicSocket(

address,int

port)publicSocket(

host,int

port,

localAddr,int

localPort)publicSocket(

address,int

port,

localAddr,int

localPort)在以前,Socket类可同时用于TCP/UDP通信:publicSocket(

host,int

port,boolean

stream)publicSocket(

host,int

port,boolean

stream)这些方法都将抛出例外IOException,程序中需要捕获处理。(2)Socket的输入/输出流管理publicgetInputStream()publicvoidshutdownInput()publicgetOutputStream()publicvoidshutdownOutput()这些方法都将抛出例外IOException,程序中需要捕获处理。(3)关闭Socketpublicvoidclose()throws(4)设置/获取Socket数据publicgetInetAddress()、publicintgetPort(),…publicvoidsetSoTimeout(int

timeout),…这些方法都将抛出例外SocketException,程序中需要捕获处理。2、ServerSocket类(1)构造方法:publicServerSocket(int

port)publicServerSocket(int

port,int

backlog):支持指定数目的连接publicServerSocket(int

port,int

backlog,

bindAddr)这些方法都将抛出例外IOException,程序中需要捕获处理。(2)主要方法publicaccept():等待客户端的连接publicvoidclose():关闭Socket(3)设置/获取Socket数据publicgetInetAddress()、publicintgetLocalPort(),…publicvoidsetSoTimeout(int

timeout),…这些方法都将抛出例外SocketException,程序中需要捕获处理。无论一个Socket通信程序的功能多么齐全、程序多么复杂,其基本结构都是一样的,都包括以下四个基本步骤:(1)、在客户方和服务器方创建Socket/ServerSocket。(2)、打开连接到Socket的输入/输出流。(3)、利用输入/输出流,按照一定的协议对Socket进行读/写操作。(4)、关闭输入/输出流和Socket。通常,程序员的主要工作是针对所要完成的功能在第(3)步进行编程,第(1)、(2)、(4)步对所有的通信程序来说几乎都是一样的。如图:ServerSocket(port#)ServerSocket(port#)ServerServerSocketsocket=()接收连接OutputStreamInputStreamCloseSocketClientSocket(host,port#)与服务器建立连接OutputStreamInputStreamCloseSocketSocket第一步:建立Socket在客户端:try{Socketclient=newSocket(host,4444);}catch(IOExceptione){}在服务器端:try{ServerSocketserver=newServerSocket(4444);}

温馨提示

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

评论

0/150

提交评论