




下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、淮海 工学院 计算机工程学院课程设计报告设计名称: 面向对象课程设计选题名称: 图像浏览器的设计与实现姓 名:学 号_专业班级: 网络工程122班系 (院): 计算机工程学院设计时间: 20143122014410设计地点:软件实验室、教室成绩:指导教师评语:签名: 面向对象课程设计报告第 10页,共 16页1. 课程设计目的面向象程序设计是一门实践性很强的计算机专业基础课程,课程设计是学习完该课程后进行的一次较全面的综合练习。其目的在于通过实践加深学生对面向对象程序设计 的理论、方法和基础知识的理解,掌握使用 Java语言进行面向对象设计的基本方法,提 高运用面向对象知识分析实际问题、解决实
2、际问题的能力。2. 课程设计任务与要求:课程设计可选用NetBeans、Eclipse、JBuilder等作为开发平台以提高开发效率,尽可能熟 练掌握其中一种集成开发环境。建议采用UML建模技术进行系统的分析设计,在 Visio中画出系统用例图和类图,并将 UML图复制到设计报告中。通过这次设计,要求掌握以下内容:1)面向对象技术中的继承与多态(重载和覆盖)机制、各种修饰符的使用2)类、包、接口的定义与使用3)常用工具类与算法的实现(数组、向量、字符串、链表)4)Java常用标准GUI组件及其事件处理5)Java的异常处理机制6)Java的数据库连接技术7)Java的多线程技术与动画制作8)J
3、ava的网络编程关于图象浏览器的设计与实现:设计一个能实现图象浏览与编辑功能的 Java程序,包括如下功能:1)从已有的图象文件列表中选择某一个,即可显示该图象,并可做放大缩小等变换。2) 在画布区域上可以进行各种规则图形的绘制(如:线段、矩形、圆等),还可通过鼠标 的拖动自由绘图。3)可以连续播放所选文件夹下的所有图象。3. 课程设计说明书(一)图象浏览器概要设计:根据需求分析,用例图如下所示:要选择图片,则需要文件的读写功能,要import进io包;总体的框架用PicBrowseFrame类实现,在定义菜单栏menuBar里放置文件打开选项, 用Up、Donw两个按钮实现上一页,下一页的功
4、能。要在面板下方放置对图片的预览滚 动条,滚动条上放上一页下一页的按钮。缩放图片功能通过改变图片的长宽实现,即是实现对图片的放大缩小,则设置picDownScanle()方法和picUpScanle()方法改变图片大小。左上角文件菜单选项中设置 exit退出菜单,通过System.exit(1)实现。要实现自动播放图 片的功能,要用到timer类,通过打开一个文件夹,每隔一段时间加载一张图片。要实现 鼠绘图形功能要有 mouseListe ner,要重写里面的方法。分别要实现画圆、画直线、画方 形等操作。(二)图象浏览器详细设计:程序里主要有八个类,分别是 PicBrowseFrame (主框
5、架),FileChooser (文件选择类) , ImagePreview (图片预览类),imgVisible (图片复制移动类),UpListener (实现放大图片监听类), MoveListener (实现移动图片监听类),CopyListener (实现复制图片监听类),LoadListener (实现加载图片监听类)。UML类图关系如下所示:FileChooserStri ngfiles;Pare ntPa th,file name,filePath,J panel sca nl ePa ne ,int tag ,lmagelc on igvoid FileChoosercr()p
6、rivate void preView() void preViewMove(inttag)public void picUpScanle()imgVisiblePublic ImageIcon createlmage(String path)public void PicCopy() public void PicMove()PicBrowseFrame注:public void showGUI()public static void main(String args)public void in itListe ner()public PicBrowseFrame()public void
7、 showGUI()public static void main(String args)public void in itListe ner()public PicBrowseFrame()UpListe nerLoadListenervoidactionPerformed()CopyListenervoidactionPerformed()ImagePreviewImageIcon thumbnailFile fileMoveListe nervoid actionPerformed()publiclmagePreview(JFileChooser fc) public void loa
8、dImage()代表内部类与外部类之间的关系表示类之间是关联的关系程序中的类:(1) PicBrowseFrame类用作整体框架voidactionPerformed()其中定义了 JFrame类的Frame为主窗体,JPanel类的conPane为图片显示的区域, JMenul类的File是文件菜单,Edit是编辑菜单,Scanle是缩放菜单,rotate是旋转菜单, JMenuItem类的tempItem为菜单选项,菜单里又包括了打开,退出,放大,缩小等功能 的选项。JLabel类的标签lab,用于加载图片。在窗体底部设了上一页,下一页按钮以及 小图预览滚动条。(2) FileChoose
9、r类实现图片的选择把选的图加载进来,取它的文件地址,用定义的方法对它进行相应的缩放,看下一张图,预览等操作。(3) LoadListener类调用 FileCh.FileChoosercr()实现加载图片的功能。(4) CopyListener 类通过 imgVisible().PicCopy(FileChooser.filePath, savePath实现对 图片复制操作的监听。(5) MoveListener 类通过 imgVisible().PicMove(FileChooser.filePath, savePath实现对图片移动操作的监听。(6)UpListener类通过调用FileC
10、h.picUpScanle()的方法,实现对图片放大操作的监听。(7) DownListener类通过调用FileCh.picDownScanle()的方法,实现对图片缩小操作的监听。(8) imgVisible类,里面定义了相对应的方法,实现对图片的复制移动等操作。(9) ImagePreview 类继承于 JComponen,实现了 PropertyChangeListener接口,主 要是用于在窗体底部的图片预览。(10) TimerAction类,继承于AbstractAction类,用于控制自动播放图片。(11) OpenFileAction类,继承于 AbstractAction类
11、,用于打开一个有图片的文件夹,并且调用timer.start()方法,设置计时器,每隔一段时间打开一张图片。程序的方法及其实现:(1)public void showGUI()方法实现了对图片浏览器的整体布局和对按钮的初始化。主要 是通过 conPane.setLayout(new BorderLayout (); menuBar.add (File); File.add (tempItem); Scanle.add(templtem);menuBar.add(Edit);lineButton, rectangleButton, ovalButton colorChooser, clearBu
12、tton;panel.setLayout(new BorderLayout();ImageIcon icon = newimgVisible().createlmage("");lab = new JLabel(ico n);等代码实现。对面板的初始化,以实现 绘圆、绘方形等操作。实现此操作的部分代码如下:pan el2 = new JPa nel() public void pain t(Graphics g) g.setColor(color);if (drawMode = DRAW_LINE) g.drawL in e(lp.x, Ip.y, cp.x, cp.y);
13、 else if (drawMode = DRAW_RECTANGLE) g.drawRect(lp.x, lp.y, Math.abs(lp.x - cp.x),Math.abs(lp.y - cp.y); else if (drawMode = DRAW_OV AL) g.drawOval(lp.x, lp.y, Math.abs(lp.x - cp.x),Math.abs(lp.y - cp.y); else if (drawMode = CLEAR) g.clearRect(lp.x, lp.y, Math.abs(lp.x - cp.x),Math.abs(lp.y - cp.y);
14、(2) public static void main(String args)主方法,构建一个新窗体.public static void main( Stri ng args) new PicBrowseFrame().showGUI();o(3) public void FileChoosercr()方法进行文件选择,同时通过添加滚动条获取图片路 径实现对图片预览。(4) private void preView()在FileChoosercr()中被引用,对获取的文件地址进行减一 或加一操作,实现图片小图预览。(5) private void preViewMove(int tag)滚
15、动条的实现方法,通过 ImageIcon iconScanle =new ImageIcon(ParentPath + ""+ filesi)获取图片信息,加了对空指针的异常处理 catch (java.lang.NullPointerException e)。(6) public void picUpScanle()放大图片的方法,先获取图片,再对图片长宽进行 width+=50;heigth+=50;加大操作。实现该操作部分代码:srcImg = new ImageIco n(filePath);width += 50;heigth += 50;Imagelc on s
16、calelc on = new Imagelc on(new imgVisible().getScaledlmage( srclmg.getlmage(), width, heigth, 1);PicBrowseFrame.lab.setlc on (scalelco n);(7) public void picDownScanle()缩小图片的方法,先获取图片,再对图片长宽进行 width-=50;heigth-=50;加大操作,与放大类似。(8) public void initListener()里面有重写 MouseListener接口和 ActionListener 接口, 主要是重
17、写了 public void mousePressed(MouseEvent e)方法和 public void mouseReleased(MouseEve nt方法。实现的代码如下:mouseListe ner = new MouseListe ner() public void mouseClicked(MouseEve nt e) public void mouseE ntered(MouseEve nt e) public void mouseExited(MouseEve nt e) public void mousePressed(MouseEve nt e) lp = e.ge
18、tPoi nt();public void mouseReleased(MouseEve nt e) cp = e.getPoi nt();pan el2.repa in t();ActionListener接口里面的操作分别是对绘图按钮的响应。(9) public PicBrowseFrame(构造方法,添加对鼠标事件和绘图按钮的监听。(10) public lmagePreview(JFileChooser fc)构造方法加载滚动条 scanlePane和对其的 监听 fc.addPropertyChangeListener(this实现预览。(11) public void loadlm
19、age()加载图片,通过判断文件是否存在,再实行打开文件的 操作。(12) public void PicCopy(String path1,String path2)通过获取文件路径 String path1, FilelnputStream in = new FilelnputStream(path1),再用文件流输出该路径到另一位置 FileOutputStream out = new FileOutputStream(path2)对文件进行复制。(13 ) public void PicMove(Stri ng path1,Stri ng path2)通过获取文件路径,再 PicCop
20、y(path1, path2);,复制原路径,然后String cmd = "del " + path1删除原来的路径实现 对文件进行移动。(14)private OpenFileAction()打开一个图片文件夹,File f= chooser.getSelectedFile() 通过判断in dex=files!=null&&files.le ngth>O?O:-1 ,让打开的文件夹不为空,如果 (files!=null&&files.length>0)再设置计时器timer.start(),每隔一段时间打开一张图片。4. 课
21、程设计成果最初打开时的界面:第9页,共 16页面向对象课程设计报告点击此处打开一张图片:选择图片所在的文件夹:打开一张图片后的效果:亠,| Pirture- E-rows-e面向对象课程设计报告第 18页,共 16页立件镰钮縮曲自话顧诫誉箱诫i氽画蛀1凹圉对该图片进行放大后的结果:厶 | Picture Browse对图片进行缩小的效果:对图片进行复制点击这里:国 Picture Browse*文件缩施画线方形画圃复制到移动到然后选择你要复制到的文件夹:已复制到该文件夹:鎌2014/4/3 19:27文件18KBPicViewerjava2014/3/2015t47JAVA Jft13KBc
22、Clientjava2013/12/15 17:53JAVA2KBServerjava2013/12/1517:42JAVA 期3<8i Testhlyjava2013/11/29 120 JAVA 5#1KB对于移动则同样是这样的类似操作,只是原图片会被删掉。自动播放图片功能,点击这里:自动播放图片的效果:随机截取的某时刻的图片:j PtctQ re Browse文件编辑編做自动疇議暂停减速 丨也线 方形 画翔过一段时间后随机截取的图片:面向对象课程设计报告第13页,共 16页I 之| Picture Browse鼠绘涂鸦功能的效果(画圆、画方形、画直线):面向对象课程设计报告第 23
23、页,共 16页可以选择自己喜欢的颜色,只要点击颜色按钮即可:或者是自定义颜色:清除涂鸦效果如图所示:5.课程设计心得这次课程设计先是参考了网上的代码然后自己再补充了一些更多的功能,最开始本来是想把那些代码都放在一个文件里,可是那样看起来很不清晰,所以最后有4个java文件,同时因为在这期间恰好参加了学校的java培训,学会了使用eclipse软件,这个软 件能列出详细的各类之间的联系和各方法等之间的联系,这样在边编译边分析的过程中, 有了更大的帮助。图片浏览器最开始实现了放大、缩小、复制、移动等功能,然后是想加上旋转图片的功能,也找到了参考的资料,可是放进自己的代码中就实现 不了了,出现了响应不了的问题,改了很久没有头绪。后来又着手添加起了鼠绘图形的功能,最开始不太懂代码的意义,添加上了以后虽然编译通过,但是总是在运行的时候出现(java.lang.NullPointerException)即空指针的错误,并且这个错误困扰了我有一个多星期,查阅了很久知道是可能是引用类型在未赋值的情况下(默认为null)却执行了某些具体的操作出现了这样的异常,需要看返回的错误信 息,看看是哪个引用类型未被初始化而导致。可是找到错误的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 45572-2025航空航天用带肋十字槽
- 材料力学与智能材料性能评估重点基础知识点
- 材料疲劳断裂机理误差分析重点基础知识点
- 火灾风险应急预案演练记录(3篇)
- 行政法学的现实意义探讨试题及答案
- 风险管理在项目中的应用试题及答案
- 战略管理中的团队合作试题及答案
- 行政法学学术研究试题与答案分享
- 2025年软件水平考试试题及答案的更新
- 2025年编程与科技的融合发展趋势试题及答案
- 一二年级诗词大赛备考试题库500题(供参考)
- 食堂库存物的盘点表
- 单位闲置房屋盘活方案范本
- 美妙的高等数学(上)智慧树知到课后章节答案2023年下江西师范大学
- 新员工入职报到通知书
- 2018年版电工-国家职业技能标准
- 浅谈如何做好财务安全工作
- 电动车分期付款的合同范本
- 高中英语-Live form the Louvre教学设计学情分析教材分析课后反思
- 2023北京高考英语答题卡ok
- 医务科运用PDCA循环提高门诊医生准时出诊率PDCA成果汇报
评论
0/150
提交评论