java电子相册实习报告及代码.doc_第1页
java电子相册实习报告及代码.doc_第2页
java电子相册实习报告及代码.doc_第3页
java电子相册实习报告及代码.doc_第4页
java电子相册实习报告及代码.doc_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

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

文档简介

目录一、程序设计1一、课程设计的目的、任务与要求11、目的12、任务及要求1二、设计方式和安排1三、考核内容和方式1四、设计内容1二、程序代码2一、程序截图2二、程序代码3三、心得体会14教师评语15java程序设计一、 程序设计一、课程设计的目的、任务与要求1、目的(1)掌握java语言的程序设计方法; (2)理论联系实际,进一步提高学生的软件开发技术;(3)培养学生分析、解决问题的能力;(4)提高学生实践论文撰写能力。2、任务及要求(1)熟悉java开发环境,掌握java程序的编译和运行;(2)掌握java基本编程技术和方法;(3)掌握gui图形界面编程技术;(4)了解异常处理机制。二、设计方式和安排1.分组选题:最多2人为一组,每组一个课题(可根据课题工作量大小,合理分配人数),每组设组长一名,负责该组设计工作的协调、分工等。设计过程:2. 分析设计准备阶段(按组讨论、对系统功能进行分析,并进行明确分工);3. 编程调试阶段(绘制流程图,编制源程序;上机调试,修改程序)三、考核内容和方式1、在设计期间,学生要按时上机,设计结束根据记录的设计材料整理成设计说明书。设计说明书中应写下设计中的主要收获,要求对问题有一定的分析,文字简短明确流畅。2、结合学生的动手能力,独立分析解决问题的能力和创新精神,设计成绩由指导教师根据考勤、设计说明书质量分优、良、中、及格和不及格五等。四、设计内容本次实践教学采用学生集中在学校网络机房上机,指导老师指导的形式。要求学生用所学的面向对象程序设计语言java来编写程序,实现特定功能,以加深对面向对象程序设计这个概念的理解。这次我编写的程序是电子相册,主要功能是实现本次设计的图片查看器实现了在用户选定的文件目录下循环浏览指定后缀的图片文件,并且可以对选择的图片进行放大,缩小,左旋,右旋,另存,彻底删除等操作。15二、 程序代码一、 程序截图二、 程序代码import java.awt.*;import java.awt.event.*;import java.awt.geom.*;import java.awt.image.*;import javax.swing.*;import javax.swing.filechooser.*;import java.io.*;import java.applet.*;public class pic extends javax.swing.jframe image pic; / 查看的图片bufferedimage bufimage; /用于显示的缓冲区图像bufferedimage oribufimage; /原始缓冲区图像graphics2d bufimageg; /缓冲区图像的图形环境string path, filename, dir; / 需要查看图片的路径string pics; / 目录下所有指定格式的图片int picwidth, picheight; / 图片大小 int i = 0;final double zoom_percent = 0.15; / 每次放大和缩小的倍率final string file_type = .jpg;boolean haspic, isangled;double scalex; /图像水平方向的缩放因子double scaley; /图像竖直方向的缩放因子double radius; / 旋转角度filter filterjpg; public pic() initcomponents(); suppresswarnings(unchecked) / private void initcomponents() buttongroup1 = new javax.swing.buttongroup(); buttongroup2 = new javax.swing.buttongroup(); jbutton10 = new javax.swing.jbutton(); openbtn = new javax.swing.jbutton(); zoominbtn = new javax.swing.jbutton(); zoomoutbtn = new javax.swing.jbutton(); oripicbtn = new javax.swing.jbutton(); prebtn = new javax.swing.jbutton(); nextbtn = new javax.swing.jbutton(); angleleftbtn = new javax.swing.jbutton(); anglerightbtn = new javax.swing.jbutton(); deletebtn = new javax.swing.jbutton(); savebtn = new javax.swing.jbutton(); exitbtn = new javax.swing.jbutton(); pathinfo = new javax.swing.jlabel(); jmenubar1 = new javax.swing.jmenubar(); jmenu1 = new javax.swing.jmenu(); jmenu2 = new javax.swing.jmenu(); jbutton10.settext(jbutton10); setdefaultcloseoperation(javax.swing.windowconstants.exit_on_close); openbtn.settext(打开); openbtn.addactionlistener(new java.awt.event.actionlistener() public void actionperformed(java.awt.event.actionevent evt) openbtnactionperformed(evt); ); openbtn.addkeylistener(new java.awt.event.keyadapter() public void keypressed(java.awt.event.keyevent evt) openbtnkeypressed(evt); ); zoominbtn.settext(放大); zoominbtn.addmouselistener(new java.awt.event.mouseadapter() public void mouseclicked(java.awt.event.mouseevent evt) zoominbtnmouseclicked(evt); ); zoomoutbtn.settext(缩小); zoomoutbtn.addmouselistener(new java.awt.event.mouseadapter() public void mouseclicked(java.awt.event.mouseevent evt) zoomoutbtnmouseclicked(evt); ); oripicbtn.settext(还原); oripicbtn.addmouselistener(new java.awt.event.mouseadapter() public void mouseclicked(java.awt.event.mouseevent evt) oripicbtnmouseclicked(evt); ); prebtn.settext(上一张); prebtn.addmouselistener(new java.awt.event.mouseadapter() public void mouseclicked(java.awt.event.mouseevent evt) prebtnmouseclicked(evt); ); nextbtn.settext(下一张); nextbtn.addmouselistener(new java.awt.event.mouseadapter() public void mouseclicked(java.awt.event.mouseevent evt) nextbtnmouseclicked(evt); ); angleleftbtn.settext(左旋); angleleftbtn.addmouselistener(new java.awt.event.mouseadapter() public void mouseclicked(java.awt.event.mouseevent evt) angleleftbtnmouseclicked(evt); ); anglerightbtn.settext(右旋); anglerightbtn.addmouselistener(new java.awt.event.mouseadapter() public void mouseclicked(java.awt.event.mouseevent evt) anglerightbtnmouseclicked(evt); ); deletebtn.settext(删除); deletebtn.addmouselistener(new java.awt.event.mouseadapter() public void mouseclicked(java.awt.event.mouseevent evt) deletebtnmouseclicked(evt); ); savebtn.settext(另存为); savebtn.addmouselistener(new java.awt.event.mouseadapter() public void mouseclicked(java.awt.event.mouseevent evt) savebtnmouseclicked(evt); ); exitbtn.settext(退出); exitbtn.addmouselistener(new java.awt.event.mouseadapter() public void mouseclicked(java.awt.event.mouseevent evt) exitbtnmouseclicked(evt); ); jmenu1.settext(file); jmenubar1.add(jmenu1); jmenu2.settext(edit); jmenubar1.add(jmenu2); setjmenubar(jmenubar1); javax.swing.grouplayout layout = new javax.swing.grouplayout(getcontentpane(); getcontentpane().setlayout(layout); layout.sethorizontalgroup( layout.createparallelgroup(javax.swing.grouplayout.alignment.leading) .addgroup(layout.createsequentialgroup() .addcontainergap() .addgroup(layout.createparallelgroup(javax.swing.grouplayout.alignment.leading) .addgroup(layout.createsequentialgroup() .addcomponent(openbtn, javax.swing.grouplayout.default_size, 57, short.max_value) .addpreferredgap(javax.swing.layoutstyle.componentplacement.related) .addcomponent(zoominbtn, javax.swing.grouplayout.default_size, 57, short.max_value) .addpreferredgap(javax.swing.layoutstyle.componentplacement.related) .addcomponent(zoomoutbtn, javax.swing.grouplayout.default_size, 57, short.max_value) .addpreferredgap(javax.swing.layoutstyle.componentplacement.related) .addcomponent(oripicbtn, javax.swing.grouplayout.default_size, 57, short.max_value) .addpreferredgap(javax.swing.layoutstyle.componentplacement.related) .addcomponent(prebtn, javax.swing.grouplayout.default_size, 69, short.max_value) .addpreferredgap(javax.swing.layoutstyle.componentplacement.related) .addcomponent(nextbtn, javax.swing.grouplayout.default_size, 69, short.max_value) .addpreferredgap(javax.swing.layoutstyle.componentplacement.related) .addcomponent(angleleftbtn, javax.swing.grouplayout.default_size, 57, short.max_value) .addpreferredgap(javax.swing.layoutstyle.componentplacement.related) .addcomponent(anglerightbtn, javax.swing.grouplayout.default_size, 57, short.max_value) .addpreferredgap(javax.swing.layoutstyle.componentplacement.related) .addcomponent(deletebtn, javax.swing.grouplayout.default_size, 57, short.max_value) .addpreferredgap(javax.swing.layoutstyle.componentplacement.related) .addcomponent(savebtn, javax.swing.grouplayout.default_size, 69, short.max_value) .addpreferredgap(javax.swing.layoutstyle.componentplacement.related) .addcomponent(exitbtn, javax.swing.grouplayout.default_size, javax.swing.grouplayout.default_size, short.max_value) .addcomponent(pathinfo, javax.swing.grouplayout.preferred_size, 137, javax.swing.grouplayout.preferred_size) .addcontainergap() ); layout.setverticalgroup( layout.createparallelgroup(javax.swing.grouplayout.alignment.leading) .addgroup(javax.swing.grouplayout.alignment.trailing, layout.createsequentialgroup() .addcomponent(pathinfo, javax.swing.grouplayout.preferred_size, 39, javax.swing.grouplayout.preferred_size) .addpreferredgap(javax.swing.layoutstyle.componentplacement.related, 391, short.max_value) .addgroup(layout.createparallelgroup(javax.swing.grouplayout.alignment.center) .addcomponent(openbtn) .addcomponent(zoominbtn) .addcomponent(zoomoutbtn) .addcomponent(oripicbtn) .addcomponent(prebtn) .addcomponent(nextbtn) .addcomponent(angleleftbtn) .addcomponent(anglerightbtn) .addcomponent(deletebtn) .addcomponent(savebtn) .addcomponent(exitbtn) .addcontainergap() ); pack(); / private void openbtnactionperformed(java.awt.event.actionevent evt) jbutton msg = new jbutton();jfilechooser chooser = new jfilechooser();/ 只显示文件夹和jpg格式的文件filenameextensionfilter filter = new filenameextensionfilter(*.jpg, jpg);/建立过滤器,只显示jpg chooser.setfilefilter(filter); chooser.setcurrentdirectory(new file(); int returnval = chooser.showopendialog(msg); / 根据返回值判断是否选择了文件 if(returnval = jfilechooser.approve_option) / 获取文件名 filename = chooser.getselectedfile().getname();/ 获取文件路径 path = chooser.getcurrentdirectory().getpath(); / 获取文件路径下所有jpg文件filterjpg = new filter(file_type);file file = new file(path);pics = file.list();pics = file.list(filterjpg);/跟踪选中的图片for(int j=0;jpics.length;j+)if(picsj.equalsignorecase(filename)i=j;break; dir = path + + filename;haspic = true;loadimage(dir);pathinfo.setforeground(color.black);pathinfo.settext(path + + filename);prebtn.setenabled(true);nextbtn.setenabled(true);zoominbtn.setenabled(true);zoomoutbtn.setenabled(true);angleleftbtn.setenabled(true);anglerightbtn.setenabled(true);deletebtn.setenabled(true);savebtn.setenabled(true); else haspic = false; pathinfo.setforeground(color.red); pathinfo.settext(没有选择文件!); / todo add your handling code here: private void openbtnkeypressed(java.awt.event.keyevent evt) jbutton msg = new jbutton();jfilechooser chooser = new jfilechooser();/ 只显示文件夹和jpg格式的文件filenameextensionfilter filter = new filenameextensionfilter(*.jpg, jpg);/建立过滤器,只显示jpg chooser.setfilefilter(filter); chooser.setcurrentdirectory(new file(); int returnval = chooser.showopendialog(msg); / 根据返回值判断是否选择了文件 if(returnval = jfilechooser.approve_option) / 获取文件名 filename = chooser.getselectedfile().getname();/ 获取文件路径 path = chooser.getcurrentdirectory().getpath(); / 获取文件路径下所有jpg文件filterjpg = new filter(file_type);file file = new file(path);pics = file.list();pics = file.list(filterjpg);/跟踪选中的图片for(int j=0;jpics.length;j+)if(picsj.equalsignorecase(filename)i=j;break; dir = path + + filename;haspic = true;loadimage(dir);pathinfo.setforeground(color.black);pathinfo.settext(path + + filename);prebtn.setenabled(true);nextbtn.setenabled(true);zoominbtn.setenabled(true);zoomoutbtn.setenabled(true);angleleftbtn.setenabled(true);anglerightbtn.setenabled(true);deletebtn.setenabled(true);savebtn.setenabled(true); else haspic = false; pathinfo.setforeground(color.red); pathinfo.settext(没有选择文件!); / todo add your handling code here: private void prebtnmouseclicked(java.awt.event.mouseevent evt) / 循环浏览图片if(i = 0) i = pics.length-1; else i -;dir = path + + picsi;pathinfo.settext(dir);haspic = true;isangled = false;scalex = 1.0;scaley = 1.0;loadimage(dir);oripicbtn.setenabled(false); / todo add your handling code here: private void nextbtnmouseclicked(java.awt.event.mouseevent evt) if(i = pics.length-1) i = 0; else i +;dir = path + + picsi;pathinfo.settext(dir);haspic = true;isangled = false;scalex = 1.0;scaley = 1.0;loadimage(dir);oripicbtn.setenabled(false); / todo add your handling code here: private void zoominbtnmouseclicked(java.awt.event.mouseevent evt) if(scalex 0.8 ) scalex -= zoom_percent;scaley -= zoom_percent; else scalex = 0.2;scaley = 0.2;pathinfo.setforeground(color.red); pathinfo.settext(已经缩至最小!);haspic = true;pictrans();repaint(); /重绘组件pathinfo.setforeground(color.black); pathinfo.settext(dir);if(scalex = 1) oripicbtn.setenabled(false); elseoripicbtn.setenabled(true); / todo add your handling code here: private void oripicbtnmouseclicked(java.awt.event.mouseevent evt) scalex = 1;scaley = 1;radius = 0;haspic = true;pictrans();repaint(); /重绘组件pathinfo.setforeground(color.black);pathinfo.settext(path + + filename);oripicbtn.setenabled(false); / todo add your handling code here: private void angleleftbtnmouseclicked(java.awt.event.mouseevent evt) isangled = true;radius += -math.pi / 2; / 设置每次左旋45度角repaint();oripicbtn.setenabled(true); / todo add your handling code here: private void anglerightbtnmouseclicked(java.awt.event.mouseevent evt) isangled = true;radius += math.pi / 2; / 设置每次右旋45度角repaint();oripicbtn.setenabled(true); / todo add your handling code here: private void deletebtnmouseclicked(java.awt.event.mouseevent evt) file f = new file(path + + picsi);if(f.exists()f.delete();elsepathinfo.setforeground(color.black);pathinfo.settext(文件不存在);for(int j=i;jpics.length-1;j+)picsj=picsj+1;if(i=pics.length-1)i=0;dir = path + + picsi;loadimage(dir); / todo add your handling code here: private void exitbtnmouseclicked(java.awt.event.mouseevent evt) haspic = false;system.exit(1); / todo add your handling code here: private void savebtnmouseclicked(java.awt.event.mouseevent evt) try jbutton msgsave = new jbutton();jfilechooser chooser = new jfilechooser();/ 只显示文件夹和jpg格式的文件filenameextensionfilter filter = new filenameextensionfilter( *.jpg, jpg);/建立过滤器,只显示jpg chooser.setfilefilter(filter); file fin = new file(path + + picsi); file f = new file( + + picsi); chooser.setselectedfile(f); int returnval = chooser.showsavedialog(msgsave); / 根据返回值判断是否选择了文件路径 if(returnval = jfilechooser.approve_option) / 获取文件路径 path = chooser.getcurrentdirectory().getpath();file fileout = new file(path + + chooser.getselectedfile().getname();fileinputstream isr = new fileinputstream(fin);fileoutputstream fout = new fileoutputstream(fileout);byte b = new byte200;int count = 0;while(count = isr.read(b, 0, 200)!=-1)fout.write(b,0,count);isr.close();fout.flush();fout.close(); catch(exception e)/ todo add your handling code here: public void

温馨提示

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

评论

0/150

提交评论