Java课程设计--幻灯片形式的图片浏览器.docx

上传人:夺命阿水 文档编号:900985 上传时间:2024-01-10 格式:DOCX 页数:12 大小:143.54KB
返回 下载 相关 举报
Java课程设计--幻灯片形式的图片浏览器.docx_第1页
第1页 / 共12页
Java课程设计--幻灯片形式的图片浏览器.docx_第2页
第2页 / 共12页
Java课程设计--幻灯片形式的图片浏览器.docx_第3页
第3页 / 共12页
Java课程设计--幻灯片形式的图片浏览器.docx_第4页
第4页 / 共12页
Java课程设计--幻灯片形式的图片浏览器.docx_第5页
第5页 / 共12页
点击查看更多>>
资源描述

《Java课程设计--幻灯片形式的图片浏览器.docx》由会员分享,可在线阅读,更多相关《Java课程设计--幻灯片形式的图片浏览器.docx(12页珍藏版)》请在课桌文档上搜索。

1、第1章课题概述111目cKj11.2课题的要求11 2.1囱口界面的要求.12 .2.2程序实现的功能要求12*21. 1整个程序的模块结构及流程22. 2各个模块功能描述2第3章程序功能的实现33. 1Jhi1,1JJ33.2主要功能模块的实现33.2.1图形界面的实现33.2.2打开文件的实现43.2.3播放的实现53.2.4展现图片的实现63.2.5暂停的实现63.2.6线程的实现6第4章调试及发现问题的解决7第5章程序测试及分析86工名吉10参考文献11第1章课题概述本次数据结构课程设计的题目是设计并实现幻灯片形式的图片浏览器,可以设置播放文件夹,播放时间。1.1 课题的目的图片浏览器

2、在日常生活中必不可缺,我们生活中遇到的任何图片文件都必须通过图片浏览器来查看。随着图片浏览器的不断发展,其功能也日益完善。由原来单张播放,到现在可以做出各种效果,可见其地位不容忽视。本程序以图片浏览为中心,采用面向对象开发方法对图片浏览器内部组织结构、功能需求进行可行性分析。本程序主要对png,jpg,gif等图片格式进行浏览功能,无需手动播放,可设置播放时间自动播放图片。这次设计,能够让我较熟练的使用常用的容器组件,图形界面。对监听也有初步了解。1. 2课题的要求1.1.1 窗口界面的要求(1)程序运行后,跳出界面。(2)在界面上显示选择文件,播放,暂停等按钮。(3)在界面上添加时间标签(设

3、置播放时间间隔(以毫秒为单位)。(4)采用BOrderLayOUt布局方式,将标签放在最下端,图片标签放在中间(5)点击选择文件后,跳出文件选择窗口。1.1.2 程序实现的功能要求(1)选择任意文件夹,点击打开,可播放里面的图片文件,并且可以播放该文件夹内子文件夹里的图片。(2)自动跳过文件夹里非图片文件,并实现循环播放。(3)每次运行结束自动清空集合里的图片,以免第二次播放时重复出现。(4)监听打开文件,播放等控件的行为,及时进行应答。(5)采用线程,获得时间,设置自动播放时间,可以为1,2,3,4,5秒。第2章概要设计1.1 整个程序的模块结构及流程打开文件文件夹浏览图片2. 2各个模块功

4、能描述打开文件:点击打开文件,跳出选择文件窗口,选择需要播放图片的文件夹。播放:点击播放按钮,可自动循环播放文件夹及其子文件夹里所有图片文件。暂停:点击播放后,该按钮自动变为暂停按钮。设置播放时间:可选择1000,2000,3000,4000,5000(以毫秒为单位)来播放文件夹里的图片。第3章程序功能的实现3.1主函数的实现初始化对象,主方法是构造函数的入口,执行主方法后,则做出界面,并显示窗口可见。publicstaticvoidmain(Stringargs)PhotoAlbumalbum=newPhotoAlbumO;album.setVisible(true);)3. 2主要功能模块

5、的实现3. 2.1图形界面的实现使用javax.swing.UIManager类中SetLookAndFeel方法,设置外观。然后设置出窗口大小,位置,以及采用的布局。我采用的是BorderLayoutO,这个布局方式便于浏览图片。我现将图片绑在滚动条SCrOUl里,然后将滚动条放在标签中,放在窗口的中心。再添加一个标签,将时间提示Settime放入标签中,并调用SetFOnt()方法,设置标签字体为隶书,加粗,16磅。调用Choice方法,并加入时间选择1000,2000,3000,4000,5000(以毫秒为单位)。创建一个面板newJpanel(),调用SetBaCkgroUnd(),将

6、面板颜色设置为cyan0添加两个JBUtton,分别为选择文件按钮,播放按钮,并调用setFont()方法,设置按钮字体为隶书,加粗,16磅。并将标签添加到面板中。最后将面板add(panel,BorderLayout.SOUTH),并对各个控件进行监听。newJFileChooserO,调用SetFiIeSeIeCtiOnMode(),只显示出目录。publicPhotoAlbumOSUPer(欢迎使用图片浏览器);tryUIManager.SetLookAndFeel(UIManager.getSystemLookAndFeelClassName();指定外观catch(ClassNotF

7、oundExceptionel)el.PrintStackTrace(); catch(InstantiationExceptionel)el.PrintStackTrace(); catch(IllegalAccessExceptionel)el.PrintStackTrace(); catch(UnsupportedLookAndFeelExceptionel)el.PrintStackTrace();setSize(600,500);SetLocation(300,100);SetDefaultcioseOperation(JFrame.EXIT_0N_CL0SE);SetLayout(

8、newBorderLayout();image=newJLabel();显示图片image.setSize(this.getWidth(),this.getHeight();scroll=newJScrol!Pane(image);add(scroll,BorderLayout.CENTER);Settimc=newJLabel(设置播放时间间隔(以亳秒为单位)”);settime.setFont(newFOnt(隶书”,Font.BOLD,16);speedtime=newChoiceO;speedtime.add(1000);speedtime.add(,2000zz);speedtime

9、.add(“3000);speedtime.add(4000);speedtime,add(,5000z/);speedtime.setFont(newFont(隶书”,Font.BOLD,16);panel=newJPanel();panel.SetBackground(Color,cyan);open=newJBUttOn(打开文件);open.setFont(newFOnt(隶书,Font.BOLD,16);open.addActionListener(this);play=newJBUtton(播放);play.setFont(newFont(隶书”,Font.BOLD,16);pla

10、y.addActionListener(this);panel,add(open);panel,add(play);panel,add(settime);panel,add(speedtime);add(panel,BorderLayout.SOUTH);3.2.2打开文件的实现将所有根文件存入数组中,用循环进行遍历,筛选出文件中的图片文件。判断该文件是否为目录,若为目录,则调用自身方法,用递归,实现播放文件夹里子文件夹里的图片。判断一个文件是否为图片文件?先Stringnames=.Png二PNG,.jpg,.JPG,gif,.GIFfilei.getName().toString().en

11、dsWith(namesj),先获得文件名,再转化成字符串,最后判断末尾符号与names是否一致,若一致,则将该文件添加到集合C中,从第一张开始播放。代码如下:publicvoidOpen(Filef)Filefile=f.IistFilesO;Stringnames=.png,”.PNG,”.jpg,”.JPG”,.gif,.GIF;if(file,length0)for(inti=0;ifile,length;i+)if(filei.isDirectory()Open(filei);for(intj=0;j0)index=0;showImage(image.getWidth(),image

12、.getHeight();isopen=true;3.2.3播放的实现若条件成立,则获得线程时间。调用getSelectedItem()方法,将时间强制转化成Longo初始化对象thread后,调用start(),启动线程。添加暂停按钮。代码如下:publicvoidplay()if(isopen)if(Jisplay)speed=Long.parseLong(speedtime.getSelectedItem();/K取当前选择的字符串表示形式thread=newCreatePlayThreadO;play.SetTeXt(暂停);isplay=true;thread,start();els

13、eStopPlayO;)13.2.4展现图片的实现获得集合C中文件,转化成字符串形式,再转化成图片形式,再压缩图片,存在icon。调用SetlCon,显示该图片,再调用SetHoriZontaIAIignnIent,设置标签内容沿X轴的对齐方式。代码如下:publicvoidshowimage(intwidth,intheigh)Imageicon=newImageicon(c.get(index).toString().getlmage().getScaledlnstance(width,heigh,Image.SCALE_DEFAULT);image,seticon(newImageico

14、n(icon);image.SetHorizontalAlignment(SwingConstants.CENTER);/设置标签内容沿X轴的对齐方式width=this.getWidth();heigth=this.getHeight();)3.2.5暂停的实现线程调用StOP()方法,添加播放,更改isplay为false.publicvoidStopPlayOthread,stop();play.SetTeXt(播放);isplay=false;3.2.6线程的实现创建线程有两种形式,实现RUnrlable接口、继承Thread类。在此,我采用的是继承Thread类。因为该类有SICeP

15、,可以让线程休眠,将SPeed传入,便可实现线程休眠。classcreateP1ayThreadextendsThreadpublicvoidrun()while(true)showImage(image.getWidth(),image.getHeight();try(sleep(speed);catch(InterruptedExceptione)e.PrintStackTrace();index=(+indexc.size()?index:O);第4章调试及发现问题的解决L打开文件后,如何只显示目录,不显示文件内容?解决方法:起初想了很久,知道一定有一个方法可以只显示出目录。于是就尝试了

16、很多,都失败了,后来百度了一下,知道了JFileehooSer()方法。调用其中setFiIeSelectionMode(JFiIeChooser.DIRECTORIES_ONLY),设置只显示目录即可。2 .怎样才能够播放文件夹里子文件夹里的图片?如果子文件还有子文件,一层层循环下去,该怎么使其中图片一起显示出来呢?解决方法:刚开始想在Stringnames=.png,PNG,.jpg,.JPG,gif;GIF中添加出文件夹的格式,后来失败了。我便向老师请教,老师提示用递归。我便尝试在循环之前,添加一步操作,使用filei.isDirectory()判断该文件是否为目录?若是目录,则OPen

17、(filei),用递归的方式扫描子文件夹,并显示出所有图片文件。3 .怎样才能让图片按照一定的时间间隔播放呢?解决方式:首先我想到肯定要用到线程。创建线程有两种形式,实现RUnnable接口、继承ThrCad类。在此,我采用的是继承Thread类。因为该类有sleep,可以让线程休眠,将Speed传入,便可实现线程休眠。将我的Speedtime转化成字符串speed=Long.parseLong(speedtime.getSelectedItem(),最后将speed传给sleep,便可实现按照一定时间间隔播放图片了。4 .图片可以播放后,但是播到最后一张便停止了,不能循环播放,怎样才能循环播

18、放呢?解决方法:设置中间变量index,起初令index为0,从第一张起播放,随后index递增,index=(+indexc.size()?index:0)判断index与集合C比较大小,若大于等于集合C,则index赋值再一次为零,进而实现循环播放。5 .虽然实现了循环播放,但是第一次播放后,系统自动记录下图片内容,第二次播放时,会将上次图片一同播出解决方法:在播放图片前,调用c.clear。先将集合C中元素清空即可。第5章程序测试及分析运行程序后,首先跳出界面。点击打开文件按钮,跳出文件选择窗口。图5-1运行界面点击打开文件按钮,跳出文件选择窗口,选择文件夹后。点击打开。打开查看:卓面吨

19、家庭组a雨淋ImC最近使用的项目这台电脑/库中网珞桌面Ljava造.软件14120除玲图片文档这台电脑文件夹名:C:UserslxDesktop图片打开(0)文件类型:所有文件取消图片就绪后,设置播放时间为100O(以毫秒为单位),点击播放。图5-3播放窗口点击暂停,设置播放时间为5000(以毫秒为单位),点击播放。第6章总结通过本次课程设计,让我更加熟练地使用java类中的各种方法。尤其是对图形界面的编辑,以及多线程,监听等内容有了更加深刻的了解。当自己动手编出一个满意的程序时,感到十分欣慰。1 .还记得刚刚看到课程设计题目时,便对图片浏览器,随机点名器颇感兴趣。最后选择了图片浏览器,因为能

20、够写出一个程序,把自己喜欢的图片展现出来,对我而言意义很大。然而,我却很担心自己能否完成这项任务,对自己表示怀疑。因为它的难度比上学期明显加大了很多,上学期的我也只是学到了皮毛而已。随后便开始着急,去图书馆借了很多有关java的书,重点看了图形界面,线程等内容。因此对我需要做的程序有了大致的了解。照着书一步一步完成个大概,先不管好不好看,实现了功能就好了,等都完成了,再想办法进行美观设计。界面是我程序的第一步,我查了好多资料,想清楚,我需要在面板中加入几个按钮,放在哪个位置等等。界面完成后,又想怎么实现循环播放呢?怎么展现图片呢?怎么控制时间呢?等等问题等着我一个个解决。2 .代码不是一气呵成

21、,而是一步一步调试出来的。在写代码过程中,可能有着不同的问题出现,那就需要足够的用心,有耐心去解决问题。这个方法不好,考虑换种方法,以达到更好的效果。3 .遇到不会的问题,多看看书,网上查查资料。书上的内容虽然不是很全,但全是基础知识,唯有把书上基础看懂了,才能有助于我们编编程能力。书上没有的内容,多问问老师,多问问学的好的同学,多百度。网上有很多资料,对我们的帮助很大。一定要把问题弄清楚,确保下次不犯同样的错误。4 .由于时间限制,我做的图片浏览器可能功能还不完善,那我会利用暑假时间,尽力将它完善。可以为我的程序加上图片效果,如翻转。还可加上音乐播放等功能。兴趣是最好的老师,当我们对一件事感兴趣了,那无论遇到什么难事,都会义无反顾的继续下去。回想起那段忙碌的时期,紧张而又充实,能在短短时间里学到这么多知识,真的很开心,为梦想而喝彩。参考文献1张晨,付冰,赵军等.Java2应用编程150例M(第一版).北京:电子工业出版社,2003.2黄明,梁旭,周绍斌.Java课程设计M(第一版).北京:电子工业出版社,2006.3徐谡,徐立,孙计安等.Java应用与开发案例教程M(第一版).北京:清华大学出版社,2005.4袁海燕,王文涛.Java实用程序设计100例Ixl(第一版).北京:人民邮电出版社,2005.

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 在线阅读 > 生活休闲


备案号:宁ICP备20000045号-1

经营许可证:宁B2-20210002

宁公网安备 64010402000986号