ImageVerifierCode 换一换
格式:DOCX , 页数:18 ,大小:279.89KB ,
资源ID:12245269      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/12245269.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(Java课程设计图片浏览器.docx)为本站会员(b****4)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

Java课程设计图片浏览器.docx

1、Java课程设计图片浏览器黔南师院计科系实验报告易木图片浏览器Java程序设计课程设计报告系别: 计算机科学系 班级: B11计科班 学生姓名: 林元兵 学生学号: 1108075150 指导教师: 罗 刚 设计日期: 2013 年 6 月 一、课程设计目的:1、复习、巩固Java语言的基础知识,进一步加深对Java的理解和掌握;2、将学习Java中的抽象概念与实际动手编程相结合,锻炼学生的分析解决实际问题的能力,培养正确的编程习惯和能力;3、培养学生自主学习能力、创新意识和创新能力。二、课程设计要求:1、首先要对课程设计题目进行前期分析,规划好所要制作的类、需要实现的功能、需要编写哪些类来实

2、现、类和类之间有什么关系(请对这部分内容进行简单叙述、可以使用UML图);2、完成的程序要进行相应的的测试,功能要完整,设计要合理,对测试出现的问题进行适当处理,使程序能正确运行;3、设计报告的写法要求: 对本次设计/编程的大体思路进行文字描述,并摘抄关键语句; 使用GUI编程的,将主要代表界面进行截图放于文档中,没有使用GUI编程的请画出类图,流程图等说明; 对本次Java的学习和课程设计进行总结。4、提交方式:设计报告文档电子版和源程序,统一交到班长或者学习委员处。 5、提交时间: 6月28日。目录1、项目运行系统要求2、项目功能分析3、项目文件(类)说明3.1、PictureView类3

3、.2、PictureViewWin类3.2.1、PictureViewWin()方法3.2.2、createTop()方法3.2.3、createCenter()方法3.24、createBottom()方法3.24、reSiziPicture()方法3.2.5、actionPerformed()方法3.3.6、run()方法3.3、ReName(内部类)3.4、musicPlay类3.4.1、musicPlay()方法3.4.2、actionPerformed()方法3.5、SettingWin类3.6、Help类4、项目演示5、总结1、项目运行系统要求在运行该程序前,必须先安装JDK,在源

4、文件的的根目录下有jdk-6u16-windows-i586.exe文件,该文件为jdk1.6版本,安装好该文件后即可运行该程序。但该程序中的背景音乐仍不能播放,因为音乐的播放需要JMF的类包 ,JMF是Java的媒体框架,它提供了先进的媒体处理能力,从而扩展了Java平台的功能。在源文件的的根目录下有jmf-2_1_1e-windows_i586.exe文件,该文件是jmf的安装包,要使用背景音乐功能,必须先安装该安装包。2、项目功能分析该项目为一个图片浏览器(易木图片浏览器)。本浏览器可以浏览常见的图片文件,图片文件可以进行复制、移动、删除、重命名等操作,在播放图片是可以选择下一张,上一张

5、,或者幻灯片播放,播放是循环播放,即当播放到最后一张(第一张)时,点击下一张(上一张)软件自动会播放到第一张(最后一张),当改变窗体使窗体大小小于图片大小时,图片会自动缩放适应窗体(不同步,当前图片不会缩放,仅当播放到下一张时才会缩放)。本浏览器其中一个最大的特点是在播放图片的同时,也可以播放背景音乐。音乐播放功能仅支持MP3和WAV可以打开音乐文件播放,通过下一首、上一首可以播放当前目录下的所有支持的音乐文件,同时,可通过暂停或停止播放功能来关闭背景音乐。该图片浏览器可通过设置默认值来设置幻灯片播放的类型、幻灯片播放的时间间隔、以及默认的背景音乐。3、项目文件(类)说明该项目分为5个类,分别

6、为:PictureView类、PictureViewWin类、musicPlay类、SettingWin类和Help类。其中,在PictureViewWin类中有一内部类ReName类。类之间的关系图如下:PictureViewPictureViewWinReName(内部类)HelpSettingWinmusicPlay3.1、PictureView:PictureView类是主窗体,其内部仅有构造方法PictureView()和main()方法。构造方法主要是定义了窗体的大小、位置、标题等。mian方法,匿名实例了一个PictureView类的对象,函数体为:new PictureView

7、();。3.2、PictureViewWinPictureViewWin()PictureViewWin类是本项目的核心,其大部分功能均有该类实现。PictureViewWin类是继承了JPanel类而成为一个面板。在该类中共含有7个方法,分别为:构造方法:PictureViewWin(),创建面板的顶部:createTop()、创建面板的中部:createCenter()、创建面板的底部:createBottom()、改变图片的大小:reSiziPicture()、事件的处理:actionPerformed()、线程:run()。各个函数的关系如图:createBottom()createT

8、op()createCenter()run()reSiziPicture()actionPerformed()(图中的箭头方向表示被调用的函数)3.2.1 、PictureViewWin()PictureViewWin()方法为构造方法,通过调用createTop(),createCenter()和createBottom()方法,分别生成pnlTop面板、pnlCenter面板、pnlBottom面板,然后使用边框布局管理器:BorderLayout bl = new BorderLayout();this.setLayout(bl);this.dd(pnlTop,BorderLayout.

9、NORTH);this.add(pnlCenter1,BorderLayout.CENTER);this.add(pnlBottom1,BorderLayout.SOUTH);将这三个面板加入PictureViewWin面板中3.1.2、createTop()createTop()方法主要是将菜单栏和工具栏加入面板中。其中菜单栏使用到JMenuBar类,声明并实例化为mbCaiDan对象,然后再将各个菜单加入到其中。在主菜单中有“文件”菜单、“工具”菜单和“帮助”菜单,而文件菜单中包含了 打开、另存为、移动到.、重命名和删除,工具菜单中包含了 使用画图程序打开、选择其他程序打开和设置。在帮助菜

10、单中包含了 帮助。首先将子菜单加入到主菜单中,使用JMenuObj.add(JMenuItemName)加入到主菜单中,例如:btnWenJian.add(btnDaKai);/将打开子菜单加入文件主菜单中再将主菜单使用JMenuBarObj.add(JMenuName)将主菜单加到菜单栏中,例如:mbCaiDan.add(btnWenJian);/将文件菜单加入菜单栏中如此将所需的菜单均加入到菜单栏中,即完成了菜单栏的制作。在工具栏,添加了一个音乐播放的工具控件,在createTop()方法里声明并实例化MusicPlay类的对象。制作好菜单栏和工具栏,将他们分别放在面板pnlMenu和pn

11、lTool然后再使用BorderLayout布局管理器将这两个面板加入到pnlTop面板中,实现代 码如下:BorderLayout gl = new BorderLayout(); pnlTop.setLayout(gl); pnlTop.add(pnlMenu,BorderLayout.NORTH);/加入菜单栏pnlTop.add(pnlTool,BorderLayout.SOUTH);/加入工具栏即完成了主面板的顶部的制作。在菜单栏和工具栏中的按钮均使用到了本类的单击事件。在主面板声明时,已实现了接口ActionListener类的方法,并重写了ActionListener类的acti

12、onPerformed()方法,在菜单栏里的按钮,通过给各按钮监听本类的事件,从而实现相应的功能。在actionPerformed()方法里说明相应功能的实现。而在工具栏的按钮,则通过监听musicPlay类的actionPerformed()方法而实现了相应的功能。在musicPlay类里再说明。3.2.3、createCenter()createCenter()方法主要完成图片的显示和图片的播放控制,播放控制包括上一张、下一张和幻灯片播放。其所有组件均放在pnlCenter面板之上,而pnlCenter面板由一个用于显示图片的标签lbPictrue和用于放置图片播放控制的按钮的面板pnlC

13、enterBottom,然后使用GridBagLayout布局管理器将两个组件放入pnlCenter面板中,而在将两个面板加入到pnlCenter时,还使用了GridBagConstraints布局管理器加以控制,实现代码如下:/声明布局管理器GridBagConstraints gbc = new GridBagConstraints();GridBagLayout gbl = new GridBagLayout();gbc.weighty = 100;/设置图片面板在y轴占的网格数,使控制按钮一直在窗体的下方 gbc.gridwidth = GridBagConstraints.REMAI

14、NDER;/指定为该行最后一个组件 gbl.setConstraints(lbPictrue, gbc);pnlCenter.add(lbPictrue);/添加显示图片的标签gbc.weighty = 1; gbl.setConstraints(pnlCenterBottom, gbc); pnlCenter.add(pnlCenterBottom);/添加按钮面板 其中在本项目中,播放控制的按钮使用了图片作为按钮。使用btnShangYiZhang= new JButton();/实例化上一张按钮 btnShangYiZhang.setIcon(new ImageIcon(huanDeng

15、Pian.png);/将按钮设置为图片 btnShangYiZhang.addActionListener(this);/给按钮添加本类监听器 即可将图片转换为按钮并添加监听器。上述过后,完成了面板pnlCenter的制作。3.2.4、createBottom()createBottom()方法中主要的是显示图片的信息,包括图片的名称,大小,尺寸和最后编辑时间,这的显示均通过标签实现,但播放图片时,程序会读出当前文件的相应属性,然后通过:lbFileName.setText(文件名:+filesindex.getName(); lbFileSize.setText(文件大小: + filesi

16、ndex.length(); lbFileEditTime.setText(最后编辑时间:+new SimpleDateFormat(yyyy/MM/dd).format(filesindex.las tModified();/最后编辑时间,并指定为年/月/日的格式lbFileDimensions.setText(尺寸: +pictureWidhOld+*+pictureHigeOld);/显示图片尺寸其中pictureWidhOld和pictureHigeOld是通过在reSiziPicture()方法里的:pictureWidhOld=inPictrueFile.getIconHeight

17、();pictureHigeOld=inPictrueFile.getIconWidth();方法来获得,因每次显示图片前,总会先调用reSiziPicture()方法,所以,每 次均能得到当前图片相应的信息。然后显示出来。3.2.5、reSiziPicture()reSiziPicture()方法主要是但图片大于窗口时,对图片进行一定的缩放以适应窗口。该方法中为了图片缩放时不变形,首先计算出原始图片的宽高比:pictureRatio = (float)pictureWidh/pictureHigh;/图片的宽高比显示图片的面板的宽高:pnlCenterHigh = pnlCenter.get

18、Height();pnlCenterWidh = pnlCenter.getWidth();然后判断图片的宽或高是否大于了显示图片的面板的大小, if(pictureHighpnlCenterHigh) pictureHigh = pnlCenterHigh-35;/调整图片的高 pictureWidh = (int)(pictureHigh*pictureRatio); /调整图片的宽度 if(pictureWidhpnlCenterWidh) pictureWidh = pnlCenterWidh-10; pictureHigh = (int)(pictureWidh/pictureRat

19、io);即完成了退图片的缩放。3.2.6、actionPerformed()actionPerformed()方法里,主要完成了菜单按钮里功能和播放控制的功能。菜单栏:打开:在打开按钮时,打开文件选择器,并将选择的图片的文件夹下的所有图片文 件均读出来用文件数组files存放,其获取当前文件夹下的所有图片的代码如下:tempFiles为当前文件夹下的所有文件,fileFormats为图片文件格式的数组,其中:File fileTemp = new FiletempFiles.length;/获取当前文件夹下的所有文件;String fileFormats = new String.jpg, .

20、JPG, .gif, .GIF,.png, .PNG, .jpeg, .JPEG; /设置可以读取的图片文件格式for(File file:tempFiles) for(String temp:fileFormats) if(file.getName().endsWith(temp) try fileTemppictureSum+ = file; /如果文件格式为图片格式,则将该文件放入数组中 catch (Exception e2) File files = new FilepictureSum;for(int i=0;fileTempi!=null;i+) filesi=fileTempi

21、;/将图片存放到files数组中另存为:使用保存文件对话框获得要保存到路径,然后使用二进制输入输出流将文件重新存到指定的位置:FileInputStream fin = new FileInputStream(filesindex);/以当前文件实例化输入流FileOutputStreamf out = new FileOutputStream(file);/实例化输出流byte b = new byte128;while(fin.read(b)!=-1)/读入文件并判断是否读完 fout.write(b);/写出文件移动到:移动到功能是在另存为功能之上在把当前文件删除即可,即filesind

22、ex.delete();/删除文件重命名:在ReName类里说明删除文件:使用filesindex.delete();即可删除文件使用画图程序打开和使用其他程序打开:该功能指定将当前文件使用外部程序打开。使用:Runtime.getRuntime().exec(程序名+文件名),例如使用画图程序打开:Runtime.getRuntime().exec(mspaint 1.jpg);/使用画图程序打设置:在SettingWin类里说明帮助:使用一个窗体显示制作人的信息,在Help类里说明图片播放控制:上一张和下一张:读取当前指向files数组的前一个文件,即filesindex-1文件,然后通过

23、该图片文件设置显示图片的标签lbPictrue的图标。即:if (index=pictureSum) index=0;File inPictrue File= new ImageIcon(filesindex.getAbsolutePath();inPictrue =reSizePicture(inPictrue ); lbPictrue.setIcon(inPictrue );幻灯片播放:幻灯片播放首先创建一个线程,通过线程图片实现幻灯片播放。具体实现在run()函数里说明。3.6.7、run()Run()函数控制图片自动播放。首先从setting.ini文件读出播放的类型(随机或顺序)和播

24、放时间间隔,然后根据设置,采用不同的播放方式和播放时间间隔(以秒为单位)。顺序播放是采用下一张的播放方式,循环播放是随机产生一个随机数,然后根据这个随机数选择播放的文件。其基本原理同下一张、上一张功能相同。3.3、ReName(内部类)ReName类是PictureViewWin类的一个内部类,主要实现对文件的重命名。在该类中生成了一个窗体,窗体里放置里一个文本框用于输入重命名的文件名,和一个确定按钮,该按下该按钮实现将文本框的内容作为文件名重命名该文件。该按钮的事件处理:首先使用输入框的内容创建一个文件变量reFileName;然后使用filesindex.renameTo(reFileNa

25、me),将当前文件名称改为reFileName的文件名称。3.4、musicPlaymusicPlay类是对背景音乐的播放控制,该类仅有两个方法:构造方法musicPlay()和事件监听方法actionPerformed()。播放控制包括:上一首、播放、暂停、停止、下一首和打开文件。musicPlay()方法中,主要是对空间的布置和添加。使用到JToolBar类,将各个按钮实例化好后,添加到JToolBar对象中,再使用FlowLayout布局管理器将JToolBar对象添加到面板中:setLayout(new FlowLayout();/设置布局管理器his.add(musicBar);/添

26、加JToolBar对象actionPerformed()方法是对各个按钮的事件进行处理。打开:使用同打开图片相同的方法获取当前文件夹下的所有支持的音乐文件(*.mp3或者*.wav),并将选中的文件创建一个Player类的对象,即创建播放器。然后使用play()方法播放该音乐文件。创建播放器并播放的实现代码:player = Manager.createPlayer(new File(musicFilePath).toURI().toURL(); /创建播放器player.prefetch(); /将文件载入缓存中player.start();/播放音乐播放:若当前播放器已存在,则使用play

27、er.start();即可播放音乐暂停:使用player.stop()即可实现暂停音乐停止:使用player.stop()后重新以当前文件创建播放器player = Manager.createPlayer(new File(filesindex.getAbsolutePath().toURI().toURL();即完成音乐停止功能。上一首:获取当前播放的文件的前以个音乐文件,并以此文件重新创建播放器,然后播放下一首:同上一首原理相同3.5、SettingWinSettingWin类继承了JDialog,并实现了接口ActionListener,WindowFocusListener的方法。该

28、类的作用是设置图片的播放类型,幻灯片播放时间间隔,和默认背景音乐。该设置是通过将设置的参数写出到setting.ini文件中保存,然后再使用是在将其中的内容读出来。在实现接口ActionListener的方法actionPerformed()中,将读取的设置通过:myFileWriter = new FileWriter(setting.ini);myBufferedWriter = new BufferedWriter(myFileWriter);myBufferedWriter.write(string);/将设置内容写到内存缓冲区myBufferedWriter.flush();/将缓冲

29、区的内容写到文件中去myBufferedWriter.close();/关闭写出流写出到setting.ini文件中在实现WindowFocusListener类的windowGainedFocus()(窗体获得焦点)方法时,如果setting.ini文件存在(即已设置过),则读出setting.ini的内容填充到相应的输入框中去,如果该文件不存在,这这些框中将使用默认值。然后可进行更改,单击“确定”即可将设置重新写到setting.ini文件中3.6、HelpHelp类中,是一个单纯的窗体,通过在窗体上添加标签,显示相关的信息。4、项目演示开始进入界面:菜单:打开图片:播放图片: 循环播放:

30、音乐停止:音乐播放:音乐暂停:设置:帮助:保存文件:删除文件:5、总结这次是一次课程设计,但是我感觉这更像是我们的一次实践,学了几个高级语言都没感觉学到了什么,但是通过这次的课程设计,我看到了我做出来的东西,非常的开心。虽然在这次的课程设计上我花了很长的时间和精力,并且做出来的东西并不是很漂亮、功能很完善,还存在很多的缺点,但是我还是很觉得很值得,因为在这次的课程设计中我基本掌握了常见的布局管理器的使用,对事件的处理,对文件的操作等等的知识。这次的课程设计,我综合使用了现在所学的东西,我不仅仅是学到了很多java以前没学过的知识,还回顾了许多以前的东西。并且,通过这次课程设计我更加感受到java语言的优略,让自己更加明确自己以后的路,认识自己的兴趣。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1