java2图形设计卷Ⅱ学习小结
- 格式:doc
- 大小:290.50 KB
- 文档页数:43
图形设计期末总结在图形设计课程的学习中,我对于图形设计的基本概念,设计原则和技巧有了更深入的了解,并且通过实践项目,不断提升自己的设计能力。
本文将对我在图形设计课程中的学习经历进行总结,并分享一些我所学到的知识和经验。
首先,我通过课堂学习了图形设计的基本概念和设计原则。
图形设计是一门综合性较高的学科,不仅包含了艺术性的要素,还需要结合实际需求进行设计。
了解设计的基本概念对于进行有效的设计是非常重要的。
我学习了色彩原理、构图技巧、字体设计等方面的知识,并且通过实际操作将这些知识应用到项目中。
掌握了设计原则后,我在进行设计时可以更加有目的地去思考和选择,提高了设计作品的质量。
其次,我在课程中学习了一些设计软件的使用技巧。
在当今数字化时代,设计软件对于图形设计师来说是必备的工具。
我学习了Adobe系列软件,如Photoshop、Illustrator和InDesign,并逐渐掌握了它们的使用技巧。
例如,我学会了如何使用图层、渐变等功能来制作精美的图像,学会了使用插画工具进行向量绘图,还学会了如何进行页面排版等等。
这些技巧的学习为我后续的设计工作提供了更多的可能性和便利性。
在课程的项目中,我通过实践设计了一系列的作品,从而提高了自己的设计能力。
其中,一个项目是设计一个品牌标志。
通过这个项目,我学到了如何将一个品牌的核心特征转化为简洁、易于识别的标志,并且考虑到色彩、形状等方面的因素。
另一个项目是设计一本杂志封面。
我学到了如何通过合理的排版和图像选择来吸引读者的注意力,并且通过封面的设计来传达出杂志的内容和风格。
在每个设计项目中,我都会经历一个设计思考的过程。
我会首先进行素材收集和灵感搜索,然后通过草图和样式试验来寻找最佳的设计方案。
在这个过程中,我要考虑设计的目的和目标受众,同时要与客户或老师进行沟通和反馈,以便不断改进设计。
这个过程需要耐心和创造力,但却是非常有趣和富有挑战性的。
除了课堂学习和实践项目,我还通过参加设计比赛和展览来拓宽自己的视野和经验。
java期末作业总结在这个Java课程的期末作业中,我经历了许多的挑战和成长。
这次作业包含了许多知识点,涉及到了面向对象编程、异常处理、文件读写等多个方面。
通过这次作业,我不仅巩固了之前学到的知识,还学到了很多新的知识点。
在这次作业中,我主要做了一个电影票售卖系统。
这个系统的主要功能包括了购票、退票、电影信息展示等。
在实现这个系统的过程中,我采用了面向对象的思想,将系统中的各个功能模块抽象为一个个类,然后通过类之间的交互来完成各种操作。
这样的设计使得代码结构清晰,易于维护和扩展。
在这次作业中,我最大的收获就是对异常处理的理解和运用。
在实现购票和退票的功能时,需要处理一些异常情况,比如座位已被占用、余票不足等。
为了应对这些异常情况,我利用Java提供的异常机制,编写了相应的异常类,并在相关的方法中进行了异常抛出和捕获处理。
这样可以使得程序在遇到异常时能够进行相应的处理,保证了程序的稳定性。
除了异常处理,我还学到了很多关于文件读写的知识。
在系统中,需要将电影信息和售票记录保存在文件中,并在需要时进行读取。
为了实现这个功能,我学习了Java中的文件操作API,并编写了相应的文件读写方法。
通过这次实践,我不仅掌握了文件读写的基本操作,还学会了如何将文件读取的数据转换为程序中的对象,并进行相应的处理。
在整个实现的过程中,我也遇到了许多的困难和问题。
比如,在实现购票功能时,我遇到了如何判断座位是否已被占用的问题。
为了解决这个问题,我经过一番思考,最终决定将座位信息保存在一个二维数组中,然后通过坐标来判断座位是否被占用。
这种解决方式既简单又高效,使得程序能够正确地处理座位冲突。
在完成这次作业的过程中,我也发现了自己的不足之处。
比如,在设计系统架构和类之间的关系时,我有时候容易陷入纠结,难以做出决策。
这使得我在一些设计上花费了较多的时间,导致了进度的延迟。
为了解决这个问题,我意识到需要多加练习,不断学习和实践。
java实训总结收获java实训总结收获java实训总结收获,实训,即“实习(践)”加“培训”,下面带来java实训总结收获,欢迎阅读参考。
java实训总结收获【1】这一期的实习,虽然实习的时间不长,但是总体上收获挺大的,学习中我不但有了学习成果的喜悦,而且自己也日渐成熟,有种说不出的喜悦。
以下是我在这次实习中的一些感悟和体会:1.通过过这次实习,我们不仅在编程的理论知识上有所巩固和深化,更重要的是有了实战进行项目开发锻炼动手能力的机会,积累了一笔宝贵的经验。
我学会了如何团队合作,共同开发。
独木难支,光靠一个人的力量是远远不够的。
只有管理组织好一个团队,才能够最终完成项目的开发,或许在编程技术水平上团队成员有高有低,但是,每个人都有自己的闪光点,总可以在团队的找到适合自己的位置,每个人在自己的团队中做的贡献,创造出不可磨灭的重大价值。
2.有些知识点以前没有学过,但我也没有去研究,实习时突然间觉得自己真的有点无知,虽然现在去看依然可以解决问题,但要浪费许多时间,这一点是我必须在以后的学习中加以改进的地方,同时也要督促自己在学习的过程中不断的完善自我。
另外一点,也是在实习中必不可少的部分,就是同学之间的互相帮助。
3.我学会了如何理解和分析客户的需求。
软件为客户而生,只有理解了客户的需求才有写出优秀的软件的可能,在这次实战演练中,老师教会了我们如何组织团队正确的理解和分析客户的需求,并写出完善的需求分析,并用于项目开发。
4.我学会了对按照需求对软件架构进行设计,这点我想是我们许多同学之前都非常欠缺的,因为我们在学校的时编写代码篇幅短小,功能单一,所以设计思路通常只留于脑内,非常模糊。
而在这次项目开发演练中,老师手把手的教会我如何从需求中抽象出问题,并将之模块化,然后逐步求精,就如同为高楼大厦搭建栋梁。
此次实习,我深深体会到了积累知识的重要性。
在实习当中我们遇到了不少难题,但是经过我们大家的讨论和老师细心的一一指导,问题得到了解决。
java实训总结及心得(7篇)我们在学校机房进行了为期三周的JAVA实训。
现在即将结束了,回首本学期的java学习,重点还是在学习概念等一些常识性的东西,Application应用程序和Applet小程序,它的开发工具,数据类型,变量,接口,输入输出流,学会分析异常,抛出异常,后期主要是小程序运用,Gui界面设计和事件。
我觉得这两种程序结构有很大的不同,不管是体系结构还是运行方式,都有很大的区别,我主要偏向于小程序的学习,呵呵,因为感觉它用处比较大,可以做出好多好多好玩的游戏,运用程序等,且它灵活。
呵呵,当然学知识可不能凭自己的爱好和一时兴趣,要一步一个脚印,认认真真,踏踏实实,理论与实践相结合,在扎实掌握课本实例和内容之后,有一定的扩展阅读和课外学习,充分全面的了解JAVA的应用和扩展运用。
这次实训,我们更多学到的是不懂就问和自己应该尽自己的全力去尝试,哪怕失败,只要自己尽自己的全力,和身边同学一起探讨而不是抄袭,团结合作,发挥团队意识,最后在自己的努力下,终于运行成功,这种成就感美不可言,心情愉悦至极。
java实训总结及心得篇2 五个月在刚来的时候,觉得过得好慢,可转眼到了毕业又觉得时间过得好快,时间恐怕才是最会捉弄人的。
java培训结束即将走入工作岗位,我想先讲一个故事来切入正题。
有两拨人进行篮球比赛,可是一拨人有四个人,而另一拨只有3个,人数不均,显然人数居多的占优势。
比赛是不公平的,比赛快要停止的时候,拥有四人的队伍突然要求三人的队伍稍等5分钟。
正在三人队疑惑的时候,震惊的一幕开始了,另外四人走到篮板前,轮流开始投篮,每人十次,投的最少的被淘汰了,余下的三人回到比赛。
比赛的结果是什么我不知道,但我知道原来的三人组无论胜败,在他们取得成功的路上绝对比预期要困难的多。
与中国的仁义之道相比,物竞天择恐怕是社会乃至世界的本职,从细微处看不到的东西,我们就从宏观角度出发,又会发现什么呢中国五千年历史可以发现有用的东西,实在很少,原因是它是一个反对竞争的。
java总结及心得体会java总结及心得体会(通用8篇)java总结及心得体会要怎么写,才更标准规范?根据多年的文秘写作经验,参考优秀的java总结及心得体会样本能让你事半功倍,下面分享,供你选择借鉴。
java总结及心得体会篇1在本学期的开学初期,我们在学校机房进行了为期三周的JAVA实训。
现在即将结束了,回首本学期的java学习,重点还是在学习概念等一些常识性的东西,通过这次为期三周的实训,遇到了很多自己感兴趣的问题,就会很有兴趣,当然学知识可不能凭自己的爱好和一时兴趣,不能遇到自己不敢兴趣的问题就把它抛给同学,要学会自己踏踏实实认真的去解决问题。
要一步一个脚印,认认真真,踏踏实实,理论与实践相结合,在扎实掌握课本实例和内容之后,有一定的扩展阅读和课外学习,充分全面的了解JAVA的应用和扩展运用。
本次我们小组所做的程序是“小小通讯录”基本功能已经较好的完成,可是还是有一些不完善,比如我们的通讯录没有能够做到把通讯录里所储存的信息以列表的形式展现出来,所以还是有些不完善,,我们的指导老师对我们的程序作出了大体评价,发现我们的思想还是处于一个比较简单的过程当中,老师的几句简单评价,就带给我们无与伦比的冲击性,由于我们写程序的经验尚且较少,很多东西无法考虑到位,老师的点评,使我们认识到了不足与今后的前进方向与目标,使我们更加具有动力与激情,拥有了继续认真学习JAVA的信心,拥有了成为一位合格的高级程序员的壮志,在编写程序的过程当中,我们在一开始就遇到了问题,一直在纠结与是使用数据库连接还是使用文件,经过老师的耐心讲解,我们了解到了尚未接触到的Jar包等一些列名词,但是经过数据库的抒写与连接发现与无法同步,所以最终我们选择了使用文件来进行这次程序的编写,第二个问题就是我们的程序在进行按钮新窗口的链接,在新窗口弹出时,无法将老窗口关闭,纠结了好久,询问老师,老师还给我用了“父子”的生动例子来讲解,最终我们查找JDK,查找类的用法终于完美解决!甚是兴奋! 在我所学的语言当中,我自认为JAVA是一门比较强大的面向对象的编程语言,不仅仅因为它的跨平台性,更多的是因为它的灵活多变和实用性较强,可以说比较的经典和强悍。
java心得总结7篇(经典版)编制人:__________________审核人:__________________审批人:__________________编制单位:__________________编制时间:____年____月____日序言下载提示:该文档是本店铺精心编制而成的,希望大家下载后,能够帮助大家解决实际问题。
文档下载后可定制修改,请根据实际需要进行调整和使用,谢谢!并且,本店铺为大家提供各种类型的经典范文,如演讲致辞、策划方案、心得体会、条据文书、合同协议、应急预案、规章制度、教学资料、作文大全、其他范文等等,想了解不同范文格式和写法,敬请关注!Download tips: This document is carefully compiled by this editor. I hope that after you download it, it can help you solve practical problems. The document can be customized and modified after downloading, please adjust and use it according to actual needs, thank you!Moreover, our store provides various types of classic sample essays for everyone, such as speeches, planning plans, reflections, legal documents, contract agreements, emergency plans, rules and regulations, teaching materials, essay summaries, and other sample essays. If you want to learn about different sample essay formats and writing methods, please stay tuned!java心得总结7篇写心得体会可以帮助我们更好地反思自己的行为和决策,心得体会是我们对过去经历的回顾,可以帮助我们更好地规划未来的发展方向,本店铺今天就为您带来了java心得总结7篇,相信一定会对你有所帮助。
java实验的心得体会java实验心得体会篇一:java实验总结1.设计一个Person类,包含:姓名,年龄,性别。
要求:该类至多只能创建一男、一女两个对象!2.设计一个测试类Test,创建若干个Person类对象,测试是否符合要求。
packagetest8;classperson{Stringname;intage;charsex;staticintflag1=1,flag2=1;privateperson(Stringn,inta,chars){name=n;age=a;sex=s;if(s=='m'){flag1--;}if(s=='f'){flag2--;}}publicstaticpersonnewperson(Stringn,inta,chars){ if(s=='m'&&flag1!=0){personp=newperson(n,a,s);returnp;}elseif(s=='f'&&flag2!=0){personp=newperson(n,a,s);returnp;}else{returnnull;}}publicStringtoString(){return("name:"+name+"age:"+age+"sex:"+sex);}}publicclasstest{publicstaticvoidmain(String[]args){personp1,p2,p3;p1=person.newperson("mary",11,'f');p2=person.newperson("tom",14,'m');p3=person.newperson("jane",13,'f');System.out.println(p1);System.out.println(p2);System.out.println(p3);}}1.设计一个数据单元类DataUnit,它包含学号(Number)和姓名(Name)两个数据成员。
java实验总结与心得
在进行Java实验的过程中,我获得了很多宝贵的经验和心得。
首先,通过实验我深刻理解了Java的基本语法和面向对象的思想。
实践中,我学会了如何定义类、创建对象、使用变量和方法等基本概念,并且能够灵活运用它们解决问题。
其次,实验过程中我学会了如何使用Java的集合框架来处理数据。
我了解了不同类型的集合类,例如ArrayList、LinkedList和HashMap等,并学会了它们的特点和适用场景。
通过实验,我发现合理选择和使用集合类可以提高程序的效率和可读性。
此外,实验还加深了我对异常处理的理解。
我学会了如何使用try-catch语句来捕获和处理异常,以及如何使用finally块来确保资源的释放。
通过实验中遇到的各种异常情况,我明白了异常处理在保证程序稳定性和可靠性方面的重要性。
在实验过程中,我也体会到了团队合作的重要性。
有时候,我们需要与他人合作完成一个大型项目,这要求我们具备良好的沟通和协作能力。
通过与同学们一起讨论和协商解决问题,我意识到团队合作可以提高工作效率和质量。
总结起来,通过Java实验,我不仅掌握了Java的基本语法和
面向对象的思想,还学会了使用集合框架和处理异常的技巧。
同时,实验也加强了我的团队合作能力和问题解决能力。
这些经验和心得
将对我今后的学习和工作产生积极的影响。
java学习心得体会_JAVA实训的心得(通用9篇)java学习_JAVA实训的心得篇11、我感觉学习java应该是循环渐进,有始有终,按部就班,脚踏实地。
java是一门有着阶梯性的一们语言,如果要学习它。
我觉得最好还是按照java的学习体系,先学习什么,在学习什么,只有这样,我们在学习中才会遇到更少的麻烦。
java是一门更倾向于网络的语言。
不要上来就学习JSP,这样不好,因为这没有基础。
在以后的学习中很可能遇到很多的麻烦,这就不好了。
2、信心,恒心,毅力是最重要的。
这是我们必须具备的心理素质。
要是学习这门语言开始的时候很有兴趣,遇到苦难就退缩,这样最终会放弃学习java,没有经历风雨怎么见彩虹。
编程就是有的时候就是那么这么人。
会遇到很多的困惑。
但是一旦你弄懂了,或者是你把问题解决了,你会感到很兴奋,编程的快乐就在此了。
3、多看看一些资料,多多的向高手请教,这样才好。
要学会总结和领会,当然,学习java一个人有一个人的想法,也有自己的独特学习方法。
总之适合自己的就是最好的。
java学习心得体会_JAVA实训的心得篇2从大三开始算,我学习java已经有一年的时间了,不过虽然时间长,但是对于现在的我还是一个初学者,懂不了多少的java初学者。
期间曾迷茫过,曾困惑过,走了不少的弯路,老师布置的试验作业每次都是不会做,每次都是要问同学,这个代码什么意思啊?为什么用这条代码,用别的不行吗?甚至后来根本没耐心问,索性就复制同学的作业交上去。
但是都是各种0分,害的同学也这样,不过他能找老师反驳,而我却没实力。
渐渐的,我认识到这样下去是不行的,我必须改正自己的学习态度和方式。
接下提到的就是我这一年来的java学习心得。
刚一开始学习java时,我就已经学习过C语言,不过C语言学的不是很好,所以开始看到java的时候我很反感,看着源代码,都不知道失什么意思。
看书的时候一看到源代码就头疼,因为根本看不懂。
那段时间根本就是一无所获,在图书馆借了一本书,关java的语法特性,与别的语言相比的优点,什么跨平台,源代码公开,什么write 、 once 、 run 、 anywhere,能说得头头是道,可是一到具体的问题,想写一些具体的东西,问题就都来了,根本不知道该怎么下手。
java课设总结与心得Java课设总结与心得随着计算机技术的不断发展,Java作为一种流行的编程语言,在企业级应用、Web开发、移动应用等领域中得到了广泛的应用。
因此,参加Java课程或者进行Java相关的项目实践是非常有意义的。
在这篇总结与心得中,我将分享我的Java 课设经历,总结我所学到的知识,并分享一些心得体会。
一、课程设计在参加Java课程之前,我需要先了解Java的基本概念和语法,以及与Java相关的一些知识。
因此,我在课程中选择了以Java基础语法和应用开发为主题的课程设计。
在课程设计中,我首先学习了Java的基础语法,包括数据类型、变量、运算符、控制语句等。
然后,我通过编写一些简单的程序,巩固所学的知识。
在课程设计的最后阶段,我选择了一个简单的Web应用,以展示所学的Java基础知识和应用能力。
通过这个课程设计,我学到了很多新的知识和技能。
我学会了如何使用Java 编写代码,包括变量的初始化、数据类型的转换、控制语句的使用等。
我还学会了如何使用Java框架来构建Web应用,包括Spring和Struts等。
同时,我也意识到了Java作为一种面向对象的编程语言,其优点和特点,如可移植性、安全性等。
二、项目实践除了参加课程设计外,我还参加了一些Java项目实践。
这些实践使我更深入地了解了Java的应用和开发方式。
在项目中,我选择了一些实际应用场景,如企业级应用、移动应用等。
在这些项目中,我负责编写代码、测试应用、解决问题等。
通过实践,我学到了更多的Java知识和技巧,如异常处理、多线程编程、数据库操作等。
同时,我也学会了如何协作和沟通,包括与团队成员、产品经理、测试人员等的沟通和协作。
三、心得体会通过参加Java课程设计和实践,我学到了很多新的知识和技能,并深刻认识到了Java作为一种流行的编程语言的优势和应用价值。
同时,我也体会到了Java 开发过程中的一些常见问题和解决方法,如代码冗余、性能优化等。
java学习心得体会(精选13篇)java学习心得体会篇1在java的海洋中遨游一年的时间,从面向对象的思想到IO流到网络编程,我不断的接触到java基础知识,在学习过程中不断进步,不断成长。
作为一名软件工程的学生,学习java是我学习的重中之重,在长达一年的学习过程中,我也对java也有新的认识。
在学习java时,会问问自己为什么要学习java?在当今时代,Java仍然是世界上最受欢迎的编程语言之一,有无限多种方法使用Java。
据xx年数据显示,Java被评为最受欢迎的编程语言之一;最新的一些报告证明,Java程序员是业内薪资最高的程序员之一。
根据全球数字化业务媒体机构的分析,拥有Java技能有利于升值加薪;同时,java是零基础的和基础薄弱的学员可以很容易的接受的一种语言。
我在漫长的学习java的岁月中,遇到了许多大大小小的困难。
首先,在学习java开始中,老师往往会布置很多代码题进行实操或者书写在作业本上。
在刚刚开始的几次作业中,我往往因为自己的浮躁与不耐烦,直接向同学要他们的代码把作业上交,但渐渐的发现,课堂跟不上,成绩不佳,我陷入了迷惘中……后来,意识到自己学习java的态度与方式是不对的,经过调整,也有了自己的一份学习java的心得体会。
java的学习基础——C语言,意识到在课上听不懂的原因也来自于自己在大一上学期并没有把C语言学习透彻,所以我会利用课后的时间看网上的视频来让自己的C语言基础提高。
java的学习需要理解代码的思路。
在写代码与学习java知识点时,往往对于每句代码都应该理解透彻,在以后的代码书写中,自己才能写出正确的代码,甚至于找出自己的代码错误。
这对于代码的理解透彻,就需要自己在上课时,好好理解老师的代码思维,自己也需要多看看关于代码的书,加深理解。
java的学习需要保持良好的心态。
在进行代码实操时,自己写出大量的代码却运行不出结果。
这时,自己并不能因为不耐烦与困难的打击就直接放弃,而是要进行学习,通过自纠,问同学,找课外知识来解决问题。
java图形化用户界面及Applet学习总结一、javaAppletApplication和Applet是Java程序的两种基本形式。
Applet是特殊的Java程序,它不需要专门的解释器来执行它,相对于Java Appliction 的解释器,如JDK的java.exe,VJ++的jview.exe,Java Applet的解释器就是Internet的浏览器,确切地讲就是兼容Java的Internet浏览器。
Applet的工作原理:1,.class和HTML保存在服务器2,当浏览器向服务器请求下载嵌入了Applet的HTML文件时。
3,下载到客户端后,由浏览器解释HTML中的各种标记并显示在用户屏幕上,当浏览器遇到HTML文件中的一个特殊标记时,表明嵌有Applet程序,浏览器会根据Applet名字和位置把其字节码文件从WWW服务器上下载到本地。
4,利用浏览器本身拥有的Java解释器执行该字节码。
Applet类的使用:Java Applet程序必须有一个主类,其父类是系统的Applet类,正是通过这个类才能完成Applet程序与浏览器的配合存在于java.applet包中,从继承结构上说属于用户图形界面的java.awt包,是系统类java.awt.Panel的子类,由于Applet类的特殊,系统专门为它建立了一个java.applet 包Applet类是Panel的子类Panel类的作用:(1)包容和排列其他的界面元素,如按钮、对话框等;(2)响应它所包容范围之内的事件,或把事件向更高层次传递。
Applet类的作用:Applet在继承上述作用的基础上,还具有一些与浏览器和Applet 生命周期有关的专门方法Applet类的主要方法:1、完成初始化操作的init()方法Applet的字节码文件从WWW服务器下载后,浏览器将自动创建一个Applet 类的实例并调用它从Applet类那里继承来的init()方法。
java课程设计总结心得体会【5篇】java课程设计总结心得体会(篇1)一、实训项目简易记事本二、实训目的和要求本次实训是对前面学过的所有面向对象的编程思想以及JAVA WEB编程方法的一个总结、回顾和实践,因此,开始设计前学生一定要先回顾以前所学的内容,明确本次作业设计所要用到的技术点并到网上搜索以及查阅相关的书籍来搜集资料。
通过编写采用JSP+Servlet+JavaBean技术框架的应用系统综合实例,以掌握Java WEB开发技术。
具体要求有以下几点:1. 问题的描述与程序将要实现的具体功能。
2. 程序功能实现的具体设计思路或框架,并检查流程设计。
3. 代码实现。
4. 设计小结。
三、实训项目的开发环境和所使用的技术基于J2SE基础,利用MyEclipse 8.5以上版本的集成开发环境完成实训项目,界面友好,代码的可维护性好,有必要的注释和相应的文档。
四、实训地点、日程、分组情况:实训地点:4栋303机房日程:第一阶段:1.班级分组,选定课题,查阅相关资料半天2.划分模块、小组成员分工半天3.利用CASE工具进行系统设计和分析,并编制源程序 5天第二阶段:上机调试,修改、调试、完善系统 2天第三阶段:撰写、上交课程设计报告,上交课程设计作品源程序(每人1份)2天五、程序分析功能模块说明六、程序设计及实现1、实现弹出菜单(JpopupMenu)2、设置字型,字体大小,字体颜色3、实现自动换行七、实训总结通过3天的实训,虽然实训的时间不长,但是总体上收获是很大的,我们的java课程学到的只是java和皮毛,一开始我还没有信心完成。
我仔细看了书上的代码之后。
对计事本有了一个大体的了解,在初训的实候知道自己应该做一个什么样的计事本了,在实训的过程中也遇到了不少困难,通过查API文档和看书,解决了问题,在写到字符的查找的替换时后,用到了上课时学到的知识,对字体的风格的保存里面的颜色分离和还原方法,是通过查API文档获得的,现在我所写的计事本只实现在一些基本功能。
java读书心得(通用5篇)java读书心得篇1首选很感谢Joshua Bloch写的这本书,当然更感谢我们的司令翻译。
至少目前我看到的100页的内容,基本没发现翻译很别扭的地方,包括错别字也没有发现,至少没有影响到我对书中内容的理解。
再次感谢。
在后面的读书心得里,我会根据我的个人理解,将书中的各个知识点逐个和大家分享。
书中的一些观点我也不是完全赞同的,呵呵(估计是我的水平不够,呵呵呵)。
我们先看全书第一个问题:考虑用静态工厂方法代替构造器。
也就是,不再使用 new 这种方式来获得一个类的实例,而是通过工厂方法获得。
优点:1 有名字这个我体会还是比较深的,在JDK里,我见过一个类的最多的构造器数量,有16个。
大家可以看看 Java.math.BigDecimal 这个类就知道了。
就算一个类的构造器有4个左右,我想你很可能在使用的时候会极其注意,不要选错了到底是用哪一个。
所以,如果能提供一个很好命名的方法来实现构造类,确实是一个不错的主意,比如BigDecimal.getInstanceFromString(...); 我想这个名字虽然有点垃圾,但要表达的意思确实异常的明确。
在一些第三方的库里面,这种情况更加突出。
我许多时候不得不看看API文档,来区分我的那个int参数到底是使用三个参数的构造器,还是使用四个参数的构造器。
因为他们太像了。
2 可以单例这个就不用说了,你可以在方法里干你要做的任何事情,而new 绝对会给你一个新的实例。
3 可以返回任何子类型。
这个对于系统的扩展是很有用处的。
new 已经决定了你肯定要这个类,而静态方法却可以修改,不一定肯定返回你方法所在的类,可以在必要时替换为一个子类。
4 代码简便这点我体会不深,呵呵不过这个写法我确实经常用List list = new ArrayList;后面的那个ArrayList里面的 String就是一个例子吧。
不过我倒是不是很在意这个,因为我很喜欢这样写了。
java学习心得实习报告(6篇免费下载)java学习心得实习报告篇1容我先说句废话,经过同学们多次的互相理论与向上建议,对于第二次次实习地点安排在学校这个结果我还是非常高兴的,毕竟少了很多旅途劳累。
这次实习内容是javaweb,我想应该与本学期开过javaweb这门课有关,毕竟上学期学过java和数据库,本觉得应该会比较轻松,开始之前大家都说这实习可是可以放松了,可是等老师开始讲之后发现这个东西理论上知识点不多,可是应用起来还是感到非常困难。
这次实习老师风格与上次实习的那位不同,去年那简直是从零开始讲,这次上来没细讲java和SQL,直接jsp。
于是上学期开过的、纸上谈兵的java课就露出破绽了,简直要从头学起,更别说与jsp、sql 融合了。
另外用jsp写网页嘛,这个语言不是很火,去Github上找,开发web 应用的大多是php、python,而servlet这个东西非常基础,甚至并不能算作一个开发框架,所以网上的资料也并不好找,网上都是些Struts2、Spring3、Hibernate,总之这开始的时候就很是艰难,晚上回到宿舍也经常要花很多时间来补之前的知识,java封装继承什么的,当然,这很累。
白天听课并不能高效的吸收老师所讲的,下来问了一下同学们是差不多的情况,可能是老师的节奏我们不太习惯。
不过这学完也终究是会了一些,大概说一下,JSP全名JavaServerPages,一种动态网页技术,所谓动态就是可以与用户交互就像论坛什么的,而html静态页面就是只能给用户看的。
首先,我们配置了几个环境:java的JDK和服务器Tomcat。
至于IDE,我还是用我比较顺手的jetbrain家的IntelliJIDEA,对了,不用Eclipse是因为它丑。
之前都是写静态页面,对于动态页面的环境配置还真是头疼了一段时间,看了一些博客,发现这个主要是在File——ProjectStructure配置依赖的jar包,还有就是tomcat服务器的配置。
java程序设计教程第二版笔记以下是一些可能的Java程序设计教程第二版的笔记内容:1. Java语言的特点:Java是一种面向对象的编程语言,具有简单性、可移植性、安全性等特点。
它支持多线程编程,可以方便地实现并发控制和多线程并发访问。
2. Java基础语法:Java的基础语法包括变量、数据类型、运算符、控制语句等。
其中,变量是存储数据的容器,数据类型用来指定变量的类型,运算符包括算术运算符、比较运算符等,控制语句包括if语句、for循环等。
3. 类和对象:类是对象的抽象,它定义了对象的属性和方法。
对象是类的实例,它是类的具体实现。
通过创建类的对象,可以方便地管理和操作数据。
4. 继承和多态:继承是面向对象编程中的一个重要概念,它可以让一个类继承另一个类的属性和方法。
多态是指一个接口可以有多种实现方式,可以让程序更加灵活和可扩展。
5. 异常处理:异常是程序中出现的错误或异常情况,它会导致程序中断或崩溃。
Java提供了异常处理机制,可以捕获和处理异常,保证程序的稳定性和可靠性。
6. 输入输出流:Java提供了输入输出流来读写数据,包括文件流、网络流等。
通过输入输出流,可以方便地读取和写入数据,实现数据交换和共享。
7. 多线程编程:Java支持多线程编程,可以实现并发控制和多线程并发访问。
通过线程池等技术,可以有效地管理线程资源,提高程序的性能和响应速度。
8. 网络编程:Java提供了丰富的网络编程API,可以实现基于TCP/IP协议的网络通信。
通过Socket编程,可以实现客户端和服务器的通信,实现分布式系统的构建。
9. GUI编程:Java提供了丰富的GUI编程API,可以实现图形用户界面。
通过Swing组件库,可以方便地构建各种界面元素,实现用户交互和界面美化。
Java面向对象程序设计实验课的心得体会经过这几周对Java面向对象程序设计的学习,让我更加了解到Java学习的重要性。
在实验课上,我们完成多个实验,在这个阶段的学习中,我从认识到熟悉,而后到能够自主运用。
通过对Java的了解,我发现它确实有很多方便之处,它集抽象性、封装性、继承性和多态性于一体,实现了代码重用和代码扩充,提高了软件开发的效率。
对于我们这个专业来说学好Java语言是很重要的,所以在实验的过程中我都尽力理解java编程思想、掌握基本技巧,尽量学到最多的知识。
学习程序设计的基本目的就是培养描述实际问题的程序化解决方案的关键技能,Java面向对象程序设计是一门实践性比较强的课程,在实际中,我们必须把理论和实践结合起来。
在实验中,我们理解理论课上的知识,然后运用到实际的操作中,我们必须在现有的理论的基础上,进行实践。
多次实验后,也让我看到了现在学习的一个很大弱点:只听不练,永远不会熟练运用;空记技巧,忽略思想,会在多变的习题中十分无奈。
Java思想:Java是一门面向对向语言,他定义一切都是对象面向对象,就是面对现实;现实中的一切都是对象,他们有分类,就产生了“类”;他们有不同,类和类之间的不同,使用类来区分;同一个类中不同的对象的区别,使用成员区分。
所以,面向对象的内部逻辑是分类。
面向对象编程思想就象数学上的一些概念,如:空间、群、环、域等原始的编程思想就象古典数学,人们只在一个集合上探讨问题,没有系统的方法(即运算)定义,于是仁者见仁、智者见智,这样在一定程度上造成了理论的一种混乱局面,不利于科学的发展。
于是近代数学向公理化发展,这是什么意思呢?就是说,人们除了在限定论域(即上面的集合,面向对象也有此概念)外,还在此论域上加进了一套通用的、公认的运算(方法);集合加上集合上定义的运算就构成了数学上的空间、群等,在计算机领域里,就变成为“类”。
这种集合上定义了操作的东西利用起来就方便多了,这使得人们讨论问题时都在给定集合的运算能力上下工夫,即有通用性可事半功倍。
《java 2 图形设计卷Ⅱ》学习小结4.轻量事件通知由“模型”一节我们知道,模型能够提供轻量通知和状态通知两种通知。
轻量通知使用一个只知道事件源的ChangeEvent(变化事件),状态通知则使用提供有关变化的更多信息的事件。
变化事件由一些事件来处理,这些对象的类实现ChangeListener接口。
接口总结3-1对ChangeListener接口进行了总结。
接口总结3-1 ChangeListenerpublic abstract void stateChanged (ChageEvent)与大多数监听器一样,ChangeListener接口只定义了一个方法。
StateChanged方法以ChangeEvent的一个实例作为参数。
类总结3-1中介绍了ChangeEvent类。
类总结3-1 ChangeEvent扩展:java.util.EventObject构造方法public ChageEvent(Object source)ChangeEvent类仅提供了一个构造方法,没有提供其他方法。
ChangeEvent构造方法以事件源作为参数。
图3-9所示的小应用程序通过监控滑杆的值来说明轻量通知。
一个变化监听器添加到这个小应用程序的滑杆中以获得滑杆值并更新这个小应用程序的状态区。
图3-9轻量通知例3-2列出了图3-9所示的小应用程序的代码例3-2一个滑杆的轻量通知import java.awt.*;import javax.swing.*;import javax.swing.event.*;public class Test extends JApplet{public void init(){JSlider slider = new JSlider(0,100,50);getContentPane().add(slider,BorderLayout.CENTER);slider.addChangeListener(new ChangeListener(){public void stateChanged(ChangeEvent e){JSlider s = (JSlider) e.getSource();showStatus(Integer.toString(s.getValue()));}});}}5.状态事件通知对不经常变化的模型属性,模型使用状态通知。
状态通知激发所有类型的事件,并且提供比事件源更多信息(轻量事件通知仅提供事件源一种信息)。
例如,当选取或取消选取一个单选按钮时,按钮模型将激发一个项事件。
6.属性变化通知当模型的关联属性变化时(当一个属性的变化激发一个属性变化事件,则这个属性称作关联属性。
)模型会以一个java.beans.PropertyChangeEvent的形式产生状态通知。
属性变化通知由一些对象来处理,这些对象的类实现java.beans.PropertyChangeListener接口,接口总结3-2中总结了这个接口。
import javax.swing.*;import java.awt.*;import java.awt.event.*;import java.util.*;import java.beans.*;public class Test extends JFrame {JTree tree = new JTree();public Test() {Container contentPane = getContentPane();JScrollPane scrollPane = new JScrollPane(tree);contentPane.add(new ControlPanel(), BorderLayout.NORTH);contentPane.add(scrollPane, BorderLayout.CENTER);tree.addPropertyChangeListener(new PropertyListener());}class ControlPanel extends JPanel {JCheckBox showRoot = new JCheckBox("show root node");public ControlPanel() {showRoot.setSelected(tree.isRootVisible());setLayout(new FlowLayout());add(showRoot);showRoot.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {tree.setRootVisible(showRoot.isSelected());}});}}class PropertyListener implements PropertyChangeListener {public void propertyChange(PropertyChangeEvent e) { String name = e.getPropertyName();if(name.equals(JTree.ROOT_VISIBLE_PROPERTY)) {String msg = "Root Visible Property: " +e.getNewValue().toString();JOptionPane.showMessageDialog(Test.this, // parent compmsg, // message"Property Change", // titleRMA TION_MESSAGE);}}}例4-7 不容透明Swing组件import javax.swing.*;import java.awt.*;public class OpaqueTest extends JApplet {public void init() {Container contentPane = getContentPane();RainPanel rainPanel = new RainPanel();ColoredPanel opaque = new ColoredPanel(),transparent = new ColoredPanel();// JComponents are opaque by default, so the opaque// property only needs to be set for transparenttransparent.setOpaque(false);rainPanel.add(opaque);rainPanel.add(transparent);contentPane.add(rainPanel, BorderLayout.CENTER);System.out.println(opaque.isOpaque());System.out.println(transparent.isOpaque());}}class RainPanel extends JPanel {ImageIcon rain = new ImageIcon(this.getClass().getResource("rain.gif")); private int rainw = rain.getIconWidth();private int rainh = rain.getIconHeight();public void paintComponent(Graphics g) {Dimension size = getSize();for(int row=0; row < size.height; row += rainh)for(int col=0; col < size.width; col += rainw)rain.paintIcon(this,g,col,row);}}class ColoredPanel extends JPanel {public void paintComponent(Graphics g) {super.paintComponent(g);Dimension size = getSize();g.setColor(Color.black);g.drawRect(0,0,size.width-1,size.height-1);g.setColor(Color.red);g.fillRect(size.width/2-25,size.height/2-25,50,50); }public Dimension getPreferredSize() {return new Dimension(100,100);}}4.3.7 立即绘制Swing组件例4-8 在事件处理方法中使用paintImmediately()import javax.swing.*;import java.awt.*;import java.awt.event.*;public class TestApplet extends JApplet {public void init() {Container contentPane = getContentPane();final JPanel panel = new JPanel();JButton button = new JButton("repaint");panel.setBackground(Color.blue);panel.setPreferredSize(new Dimension(100,100));contentPane.setLayout(new FlowLayout()); contentPane.add(button);contentPane.add(panel);button.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) {Color c = panel.getBackground();Dimension sz = panel.getSize();panel.setBackground(c == Color.blue ? Color.red : Color.blue);panel.paintImmediately(0,0,sz.width,sz.height);// for illustrative purposes onlytry {Thread.currentThread().sleep(5000);}catch(InterruptedException ex) {ex.printStackTrace();}}});}}拖动图片效果import javax.swing.*;import java.awt.*;import java.awt.event.*;class AutoscrollViewport extends JViewport {Point scrollTo = new Point(), last = new Point();boolean manualDragUnderway = false;final int increment;public AutoscrollViewport(Component component, int inc) {this.increment = inc;setView(component);setAutoscrolls(true);setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));addMouseListener(new MouseAdapter() {public void mousePressed(MouseEvent e) {last.x = e.getPoint().x;last.y = e.getPoint().y;manualDragUnderway = true;}});addMouseMotionListener(new MouseMotionAdapter() {public void mouseDragged(MouseEvent e) {Point drag = e.getPoint();Point viewPos = getViewPosition();Point offset = new Point(drag.x - last.x,drag.y - last.y);last.x = drag.x;last.y = drag.y;if(contains(drag)) {if(manualDragUnderway) {scrollTo.x = viewPos.x - offset.x;scrollTo.y = viewPos.y - offset.y;setViewPosition(scrollTo);}}else { // autoscrolling ...Rectangle bounds = getBounds();manualDragUnderway = false;if(drag.x > bounds.x + bounds.width) {// scroll rightviewPos.x -= increment;setViewPosition(viewPos);}if(drag.x < 0) {// scroll leftviewPos.x += increment;setViewPosition(viewPos);}if(drag.y > bounds.y + bounds.height) {// scroll downviewPos.y -= increment;setViewPosition(viewPos);}if(drag.y < 0) {// scroll upviewPos.y += increment;setViewPosition(viewPos);}}}});}}import javax.swing.*;public class AutoscrollTest extends JFrame{public AutoscrollTest() {JLabel label = new JLabel(new ImageIcon("pic.gif"));JViewport vp = new AutoscrollViewport(label, 3);getContentPane().add(vp, "Center");this.setVisible(true);}public static void main(String args[]){new AutoscrollTest();}}例4-21 用客户属性把一个动态目标分配给一个按钮import javax.swing.*;import java.util.*;import java.awt.*;import java.awt.event.*;import java.beans.*;public class ClientPropertiesTest extends JApplet {JButton button = new JButton("toggle target color");JComboBox targetCombo = new JComboBox();JPanel[] targets = { new JPanel(),new JPanel(),new JPanel() };public void init() {Container contentPane = getContentPane();Dimension targetPreferredSize = new Dimension(100,100);JPanel targetPanel = new JPanel();for(int i=0; i < targets.length; ++i) {targets[i].setBackground(Color.blue);targets[i].setPreferredSize(targetPreferredSize);targetPanel.add(targets[i]);}targetCombo.addItem("left");targetCombo.addItem("center");targetCombo.addItem("right");contentPane.setLayout(new FlowLayout());contentPane.add(button);contentPane.add(targetCombo);contentPane.add(targetPanel);button.putClientProperty("target", targets[0]);button.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {Component c =(Component)button.getClientProperty("target");if(c != null) {Color bg = c.getBackground();c.setBackground(bg == Color.blue ?Color.red : Color.blue);c.repaint();}}});targetCombo.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {button.putClientProperty("target",targets[targetCombo.getSelectedIndex()]);}});button.addPropertyChangeListener(new PropertyChangeListener() { public void propertyChange(PropertyChangeEvent e) {if(e.getPropertyName().equals("target")) {showStatus((String)targetCombo.getSelectedItem() +" panel set as target");}}});}public static void main(String args[]) {final JFrame f = new JFrame();JApplet applet = new ClientPropertiesTest();applet.init();f.setContentPane(applet.getContentPane());f.setBounds(100,100,300,250);f.setTitle("ClientPropertiesTest");f.setVisible(true);f.addWindowListener(new WindowAdapter() {public void windowClosing(WindowEvent e) {f.dispose();System.exit(0);}});}}class PanelWithTitle extends JPanel {private String title;public PanelWithTitle(String title) {this.title = title;}public void paintComponent(Graphics g) {FontMetrics fm = g.getFontMetrics();Dimension size = getSize();int titleW = fm.stringWidth(title);g.setColor(Color.black);g.drawString(title, size.width/2 - titleW/2,size.height/2);}}例5-6 使用定制边框import java.awt.*;import javax.swing.*;import javax.swing.border.*;public class HandleBorder extends AbstractBorder { protected Color lineColor;protected int thick;public HandleBorder() {this(Color.black, 6);}public HandleBorder(Color lineColor, int thick) {this.lineColor = lineColor;this.thick = thick;}public void paintBorder(Component c, Graphics g, int x,int y, int w, int h) {Graphics copy = g.create();if(copy != null) {try {copy.translate(x,y);paintRectangle(c,copy,w,h);paintHandles(c,copy,w,h);}finally {copy.dispose();}}}public Insets getBorderInsets() {return new Insets(thick,thick,thick,thick);}protected void paintRectangle(Component c, Graphics g,int w, int h) {g.setColor(lineColor);g.drawRect(thick/2,thick/2,w-thick-1,h-thick-1);//g.drawLine(w-thick,0,w-thick,h);g.drawLine(0,20,w,20);}protected void paintHandles(Component c, Graphics g,int w, int h) {g.setColor(lineColor);g.fillRect(0,0,thick,thick); // upper leftg.fillRect(w-thick,0,thick,thick); // upper rightg.fillRect(0,h-thick,thick,thick); // lower leftg.fillRect(w-thick,h-thick,thick,thick); // lower rightg.fillRect(w/2-thick/2,0,thick,thick); // mid topg.fillRect(0,h/2-thick/2,thick,thick); // mid leftg.fillRect(w/2-thick/2,h-thick,thick,thick); // mid bottomg.fillRect(w-thick,h/2-thick/2,thick,thick); // mid right}}import javax.swing.*;import javax.swing.border.*;import java.awt.*;import java.awt.event.*;public class Test extends JApplet {public void init() {Container contentPane = getContentPane();JPanel[] panels = { new JPanel(),new JPanel(), new JPanel() };Border[] borders = { new HandleBorder(),new HandleBorder(Color.red, 8),new HandleBorder(Color.blue, 10) };contentPane.setLayout(new FlowLayout(FlowLayout.CENTER,20,20));for(int i=0; i < panels.length; ++i) {panels[i].setPreferredSize(new Dimension(100,100));panels[i].setBorder(borders[i]);contentPane.add(panels[i]);}}}例5-8 ColorIcon类清单import com.sun.java.swing.JApplet;import java.awt.Color;import java.awt.Graphics;public class IconTest extends JApplet {ColorIcon redIcon;ColorIcon blueIcon;ColorIcon yellowIcon;public void paint(Graphics g) {redIcon.paintIcon(this, g, 0, 0);blueIcon.paintIcon(this, g, redIcon.getIconWidth() + 10, 0); yellowIcon.paintIcon(this, g, redIcon.getIconWidth() + 10 + blueIcon.getIconWidth() + 10, 0);}public IconTest() {redIcon = new ColorIcon(Color.red, 50, 50);blueIcon = new ColorIcon(Color.blue, 60, 60);yellowIcon = new ColorIcon(Color.yellow, 70, 70);}}import java.awt.*;import javax.swing.*;class ColorIcon implements Icon {private Color fillColor;private int w, h;public ColorIcon(Color fillColor, int w, int h) {this.fillColor = fillColor;this.w = w;this.h = h;}public void paintIcon(Component c, Graphics g, int x, int y) {g.setColor(Color.black);g.drawRect(x, y, w-1, h-1);g.setColor(fillColor);g.fillRect(x+1, y+1, w-2, h-2);}public int getIconWidth() {return w;}public int getIconHeight() {return h;}}例5-9 菜单项中的图标import java.awt.*;import javax.swing.*;class ColorIcon implements Icon {private Color fillColor;private int w, h;public ColorIcon(Color fillColor, int w, int h) {this.fillColor = fillColor;this.w = w;this.h = h;}public void paintIcon(Component c, Graphics g, int x, int y) {g.setColor(Color.black);g.drawRect(x, y, w-1, h-1);g.setColor(fillColor);g.fillRect(x+1, y+1, w-2, h-2);}public int getIconWidth() {return w;}public int getIconHeight() {return h;}}import java.awt.*;import javax.swing.*;public class Test extends JApplet {ColorIcon redIcon = new ColorIcon(Color.red, 40, 15),blueIcon = new ColorIcon(Color.blue, 40, 15),yellowIcon = new ColorIcon(Color.yellow, 40, 15);public void init() {JMenuBar mb = new JMenuBar();JMenu colors = new JMenu("Colors");colors.add(new JMenuItem(redIcon));colors.add(new JMenuItem(blueIcon));colors.add(new JMenuItem(yellowIcon));mb.add(colors);setJMenuBar(mb);}}例5-11 在许多组件中共享单图标的小应用程序import java.awt.*;import javax.swing.*;public class ColorIcon implements Icon {private int w, h;public ColorIcon(int w, int h) {this.w = w;this.h = h;}public void paintIcon(Component c, Graphics g, int x, int y) { Color fillColor = Color.lightGray;g.setColor(Color.black);g.drawRect(x, y, w-1, h-1);if(c instanceof JComponent) {JComponent jc = (JComponent)c;fillColor = (Color)jc.getClientProperty("fill color");}g.setColor(fillColor);g.fillRect(x+1, y+1, w-2, h-2);}public int getIconWidth() {return w;}public int getIconHeight() {return h;}}import java.awt.*;import java.awt.event.*;import javax.swing.*;public class Test extends JApplet {private ColorIcon colorIcon = new ColorIcon(40, 15);private JPopupMenu popup = new JPopupMenu();private JButton button = new JButton("select a color ...",colorIcon);public void init() {addPopupMenuItems();button.putClientProperty("fill color", Color.red);Container contentPane = getContentPane();contentPane.setLayout(new FlowLayout());contentPane.add(button);button.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {Dimension buttonsz = button.getSize();popup.show(button,buttonsz.width,buttonsz.height);}});}private void addPopupMenuItems() {JMenuItem redItem = new JMenuItem(colorIcon),blueItem = new JMenuItem(colorIcon),grayItem = new JMenuItem(colorIcon),yellowItem = new JMenuItem(colorIcon),blackItem = new JMenuItem(colorIcon),whiteItem = new JMenuItem(colorIcon),orangeItem = new JMenuItem(colorIcon);MenuItemListener listener = new MenuItemListener();redItem.putClientProperty("fill color", Color.red);redItem.addActionListener(listener);popup.add(redItem);blueItem.putClientProperty("fill color", Color.blue);blueItem.addActionListener(listener);popup.add(blueItem);grayItem.putClientProperty("fill color", Color.gray);grayItem.addActionListener(listener);popup.add(grayItem);yellowItem.putClientProperty("fill color", Color.yellow);yellowItem.addActionListener(listener);popup.add(yellowItem);blackItem.putClientProperty("fill color", Color.black);blackItem.addActionListener(listener);popup.add(blackItem);whiteItem.putClientProperty("fill color", Color.white);whiteItem.addActionListener(listener);popup.add(whiteItem);orangeItem.putClientProperty("fill color", Color.orange);orangeItem.addActionListener(listener);popup.add(orangeItem);}class MenuItemListener implements ActionListener {public void actionPerformed(ActionEvent e) {JComponent jc = (JComponent)e.getSource();button.putClientProperty("fill color",jc.getClientProperty("fill color"));button.repaint();}}}import java.awt.*;import javax.swing.*;public class Test extends JFrame{public Test() {this.setSize(300,300);JPanel panel = new MyJPanel();getContentPane().add(panel, "Center");}public static void main(String args[]){Test test= new Test();test.show();test.repaint(); //显示两次sss}}class MyJPanel extends JPanel {public void paintComponent(Graphics g) {int thick=6;g.translate(100,100);g.setColor(Color.red);g.drawLine(100,100,200,200);g.drawLine(0,0,100,0);g.fillRect(0-thick/2,0-thick/2,thick,thick); // upper leftg.fillRect(100/2-thick/2,0-thick/2,thick,thick); // upper leftg.fillRect(100-thick/2,0-thick/2,thick,thick); // upper leftSystem.out.println("sss");}}对于JFrame的更新import java.awt.*;import java.awt.event.*;import javax.swing.*;/*为了达到画线的功能,我们分别implements MouseListener与MouseMotionListener.*/public class MouseDemo3 extends JFrame implements MouseListener,MouseMotionListener{ int flag;//flag=1代表Mouse Moved,flag=2代表Mouse Draggedint x=0;int y=0;int startx,starty,endx,endy;//起始坐标与终点坐标public MouseDemo3(){Container contentPane=getContentPane();contentPane.addMouseListener(this);contentPane.addMouseMotionListener(this);setSize(300,300);show();addWindowListener(new WindowAdapter(){public void windowClosing(WindowEvent e){System.exit(0);}});}/*由mousePressed(),mouseReleased()取得示拖曳的开始与结束坐标*/public void mousePressed(MouseEvent e){startx=e.getX();starty=e.getY();}public void mouseReleased(MouseEvent e){endx=e.getX();endy=e.getY();}public void mouseEntered(MouseEvent e){}public void mouseExited(MouseEvent e){}public void mouseClicked(MouseEvent e){}/*mouseMoved(),mouseDragged()取得鼠标移动的每一个坐标,并调用repaint()方法*/ public void mouseMoved(MouseEvent e){flag=1;x=e.getX();y=e.getY();repaint();}public void mouseDragged(MouseEvent e){flag=2;x=e.getX();y=e.getY();repaint();}public void update(Graphics g){g.setColor(this.getBackground());g.fillRect(0,0,getWidth(),getHeight());paint(g);}public void paint(Graphics g){g.setColor(Color.black);if (flag==1){g.drawString("鼠标坐标:("+x+","+y+")",10,50);g.drawLine(startx,starty,endx,endy);}if (flag==2){g.drawString("拖曳鼠标价坐标:("+x+","+y+")",10,50);g.drawLine(startx,starty,x,y);}}public static void main(String[] args){new MouseDemo3();}}在JPanel上画有端点的线import java.awt.*;import javax.swing.*;import java.awt.event.*;import java.util.Vector;public class MyDrawPanelextends JFrame {public MyDrawPanel() {this.setSize(300, 300);JPanel panel = new MyJPanel();getContentPane().add(panel, "Center");}public static void main(String args[]) {MyDrawPanel myDrawPanel = new MyDrawPanel();myDrawPanel.show();}}class MyJPanelextends JPanelimplements MouseListener ,MouseMotionListener{public Point pointStart,pointEnd;public Vector vectorStart,vectorEnd;public boolean mouseReleased=false;public MyJPanel() {pointStart=new Point(100,100);pointEnd=new Point(200,200);vectorStart=new Vector();vectorEnd=new Vector();vectorStart.addElement(new Point(pointStart.x,pointStart.y));vectorEnd.addElement(new Point(pointEnd.x,pointEnd.y));this.addMouseListener(this);this.addMouseMotionListener(this);}public void paintComponent(Graphics g) {/*g.setColor(this.getBackground());g.fillRect(0, 0, getWidth(), getHeight());int thick = 6;g.setColor(Color.red);g.drawLine( pointStart.x, pointStart.y, pointEnd.x, pointEnd.y);g.fillRect( pointStart.x - thick / 2, pointStart.y - thick / 2, thick, thick); // upper leftg.fillRect( pointStart.x + ( pointEnd.x - pointStart.x) / 2 - thick / 2,pointStart.y + ( pointEnd.y - pointStart.y) / 2 - thick / 2, thick, thick); // upper leftg.fillRect( pointEnd.x - thick / 2, pointEnd.y - thick / 2, thick, thick); // upper left*/System.out.println("这是paintComponent方法");g.setColor(this.getBackground());g.fillRect(0, 0, getWidth(), getHeight());int thick = 6;g.setColor(Color.red);if (mouseReleased) {for (int count = 0; count < vectorStart.size(); count++) {int x1, y1, x2, y2;x1 = ( (Point) vectorStart.elementAt(count)).x;y1 = ( (Point) vectorStart.elementAt(count)).y;x2 = ( (Point) vectorEnd.elementAt(count)).x;y2 = ( (Point) vectorEnd.elementAt(count)).y;g.drawLine(x1, y1, x2, y2);g.fillRect(x1 - thick / 2, y1 - thick / 2, thick, thick); // upper leftg.fillRect(x1 + (x2 - x1) / 2 - thick / 2,y1 + (y2 - y1) / 2 - thick / 2, thick, thick); // upper leftg.fillRect(x2 - thick / 2, y2 - thick / 2, thick, thick); // upper left}}else{for (int count = 0; count < vectorStart.size()-1; count++) {int x1, y1, x2, y2;x1 = ( (Point) vectorStart.elementAt(count)).x;y1 = ( (Point) vectorStart.elementAt(count)).y;x2 = ( (Point) vectorEnd.elementAt(count)).x;y2 = ( (Point) vectorEnd.elementAt(count)).y;g.drawLine(x1, y1, x2, y2);g.fillRect(x1 - thick / 2, y1 - thick / 2, thick, thick); // upper leftg.fillRect(x1 + (x2 - x1) / 2 - thick / 2,y1 + (y2 - y1) / 2 - thick / 2, thick, thick); // upper leftg.fillRect(x2 - thick / 2, y2 - thick / 2, thick, thick); // upper left}g.drawLine( pointStart.x, pointStart.y, pointEnd.x, pointEnd.y);g.fillRect( pointStart.x - thick / 2, pointStart.y - thick / 2, thick, thick); // upper leftg.fillRect( pointStart.x + ( pointEnd.x - pointStart.x) / 2 - thick / 2,pointStart.y + ( pointEnd.y - pointStart.y) / 2 - thick / 2, thick, thick); // upper leftg.fillRect( pointEnd.x - thick / 2, pointEnd.y - thick / 2, thick, thick); // upper left}}/*由mousePressed(),mouseReleased()取得示拖曳的开始与结束坐标*/public void mousePressed(MouseEvent e) {mouseReleased=false;this. pointStart.x = e.getX();this. pointStart.y = e.getY();vectorStart.addElement(new Point(e.getX(),e.getY()));System.out.println("Pressed"+vectorStart);}public void mouseReleased(MouseEvent e) {mouseReleased=true;this. pointEnd.x = e.getX();this. pointEnd.y = e.getY();vectorEnd.addElement(new Point(e.getX(),e.getY()));this.repaint();System.out.println("Released"+vectorEnd);}public void mouseEntered(MouseEvent e) {}public void mouseExited(MouseEvent e) {}public void mouseClicked(MouseEvent e) {}/*mouseMoved(),mouseDragged()取得鼠标移动的每一个坐标,并调用repaint()方法*/ public void mouseMoved(MouseEvent e) {// System.out.println("mouseMoved");}public void mouseDragged(MouseEvent e) {this. pointEnd.x = e.getX();this. pointEnd.y = e.getY();repaint();System.out.println("mouseDragged");}}例5-16 与一个工具条按钮和一个菜单项相关联的动作import java.awt.*;import java.awt.event.*;import java.beans.*;import javax.swing.*;public class Test extends JAppletimplements PropertyChangeListener {JPanel jp = new JPanel();JPanel cp = new JPanel(); // cp = checkbox panelJCheckBox jc = new JCheckBox("action enabled");JMenuBar mb = new JMenuBar();JToolBar tb = new JToolBar();Action saveAction = new SaveAction();Action exitAction = new ExitAction();public void init() {JMenu fileMenu = new JMenu("File");fileMenu.add(saveAction);fileMenu.add(exitAction);tb.add(saveAction);JCheckBoxMenuItem checkBoxItem =new JCheckBoxMenuItem("saved");associateActionAndCheckBoxItem(saveAction, checkBoxItem);fileMenu.add(checkBoxItem);mb.add(fileMenu);saveAction.addPropertyChangeListener(this);jp.setLayout(new BorderLayout(2,2));jp.add(tb, "North"); // toolbarjp.add(cp, "Center"); // checkbox panelcp.setLayout(new FlowLayout());cp.add(jc);Container contentPane = getContentPane();contentPane.setLayout(new BorderLayout());getRootPane().setJMenuBar(mb);contentPane.add(jp, "Center");jc.setSelected(saveAction.isEnabled());jc.addItemListener(new ItemListener() {public void itemStateChanged(ItemEvent event) {saveAction.setEnabled(!saveAction.isEnabled());}});}public void propertyChange(PropertyChangeEvent e) {boolean b = ((Boolean)e.getNewValue()).booleanValue();showStatus("save action " + (b ? "enabled" : "disabled"));}private void associateActionAndCheckBoxItem(final Action action,final JCheckBoxMenuItem item) { item.setHorizontalTextPosition(JButton.LEFT);item.setVerticalTextPosition(JButton.CENTER);item.setEnabled(action.isEnabled());item.addActionListener(action);action.addPropertyChangeListener(new PropertyChangeListener() { public void propertyChange(PropertyChangeEvent e) {String name = e.getPropertyName();if(name.equals()) {item.setText((String)e.getNewValue());item.revalidate();}else if(name.equals("enabled")) {item.setEnabled(((Boolean)e.getNewValue()).booleanV alue());item.repaint();}else if(name.equals(Action.SMALL_ICON)) {item.setIcon((Icon)e.getNewValue());item.revalidate();}}});}}class SaveAction extends AbstractAction {public SaveAction() {super("save", new ImageIcon("save.gif"));setEnabled(false);}public void actionPerformed(ActionEvent event) {String s = new String();Object o = event.getSource();if(o instanceof JButton) s += "ToolBar: ";else if(o instanceof JMenuItem) s += "MenuBar: ";System.out.println(s + " save");}}class ExitAction extends AbstractAction {public ExitAction() {super("exit");}public void actionPerformed(ActionEvent event) {System.exit(0);}}例6-7 转换鼠标坐标import java.awt.*;import java.awt.event.*;import javax.swing.*;public class Test extends JApplet {private Point lastScreenPt = null;private final Container contentPane = getContentPane();private PanelWithStringouter = new PanelWithString(Color.orange),inner = new PanelWithString(Color.red),innermost = new PanelWithString(Color.yellow);public Test() {Font font = new Font("Times-Roman", Font.ITALIC, 26);contentPane.setLayout(new OverlayLayout(contentPane));contentPane.add(innermost);contentPane.add(inner);contentPane.add(outer);innermost.setMaximumSize(new Dimension(350,50));inner.setMaximumSize(new Dimension(450,200));outer.setMaximumSize(new Dimension(550,400));setFont(font);innermost.setFont(font);inner.setFont(font);outer.setFont(font);contentPane.addMouseMotionListener(new MouseMotionAdapter() { public void mouseMoved(MouseEvent e) {Point pt = e.getPoint();outer.setString(SwingUtilities.convertPoint(contentPane, pt, outer).toString());inner.setString(SwingUtilities.convertPoint(contentPane, pt, inner).toString());innermost.setString(SwingUtilities.convertPoint(contentPane, pt, innermost).toString());SwingUtilities.convertPointToScreen(pt, contentPane);lastScreenPt = pt;repaint();}});}。