java電子相冊實(shí)習(xí)報告及代碼_第1頁
java電子相冊實(shí)習(xí)報告及代碼_第2頁
java電子相冊實(shí)習(xí)報告及代碼_第3頁
java電子相冊實(shí)習(xí)報告及代碼_第4頁
java電子相冊實(shí)習(xí)報告及代碼_第5頁
已閱讀5頁,還剩11頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、目錄一、程序設(shè)計1一、課程設(shè)計的目的、任務(wù)與要求11、目的12、任務(wù)及要求1二、設(shè)計方式和安排1三、考核內(nèi)容和方式1四、設(shè)計內(nèi)容1二、程序代碼2一、程序截圖2二、程序代碼3三、心得體會14教師評語15一、 程序設(shè)計一、課程設(shè)計的目的、任務(wù)與要求1、目的(1)掌握java語言的程序設(shè)計方法; (2)理論聯(lián)系實(shí)際,進(jìn)一步提高學(xué)生的軟件開發(fā)技術(shù);(3)培養(yǎng)學(xué)生分析、解決問題的能力;(4)提高學(xué)生實(shí)踐論文撰寫能力。2、任務(wù)及要求(1)熟悉java開發(fā)環(huán)境,掌握java程序的編譯和運(yùn)行;(2)掌握java基本編程技術(shù)和方法;(3)掌握gui圖形界面編程技術(shù);(4)了解異常處理機(jī)制。二、設(shè)計方式和安排1.

2、分組選題:最多2人為一組,每組一個課題(可根據(jù)課題工作量大小,合理分配人數(shù)),每組設(shè)組長一名,負(fù)責(zé)該組設(shè)計工作的協(xié)調(diào)、分工等。設(shè)計過程:2. 分析設(shè)計準(zhǔn)備階段(按組討論、對系統(tǒng)功能進(jìn)行分析,并進(jìn)行明確分工);3. 編程調(diào)試階段(繪制流程圖,編制源程序;上機(jī)調(diào)試,修改程序)三、考核內(nèi)容和方式1、在設(shè)計期間,學(xué)生要按時上機(jī),設(shè)計結(jié)束根據(jù)記錄的設(shè)計材料整理成設(shè)計說明書。設(shè)計說明書中應(yīng)寫下設(shè)計中的主要收獲,要求對問題有一定的分析,文字簡短明確流暢。2、結(jié)合學(xué)生的動手能力,獨(dú)立分析解決問題的能力和創(chuàng)新精神,設(shè)計成績由指導(dǎo)教師根據(jù)考勤、設(shè)計說明書質(zhì)量分優(yōu)、良、中、及格和不及格五等。四、設(shè)計內(nèi)容本次實(shí)踐教學(xué)

3、采用學(xué)生集中在學(xué)校網(wǎng)絡(luò)機(jī)房上機(jī),指導(dǎo)老師指導(dǎo)的形式。要求學(xué)生用所學(xué)的面向?qū)ο蟪绦蛟O(shè)計語言java來編寫程序,實(shí)現(xiàn)特定功能,以加深對面向?qū)ο蟪绦蛟O(shè)計這個概念的理解。這次我編寫的程序是電子相冊,主要功能是實(shí)現(xiàn)本次設(shè)計的圖片查看器實(shí)現(xiàn)了在用戶選定的文件目錄下循環(huán)瀏覽指定后綴的圖片文件,并且可以對選擇的圖片進(jìn)行放大,縮小,左旋,右旋,另存,徹底刪除等操作。二、 程序代碼一、 程序截圖二、 程序代碼import java.awt.*;import java.awt.event.*;import java.awt.geom.*;import java.awt.image.*;import javax.sw

4、ing.*;import javax.swing.filechooser.*;import java.io.*;import java.applet.*;public class pic extends javax.swing.jframe image pic; / 查看的圖片bufferedimage bufimage; /用于顯示的緩沖區(qū)圖像bufferedimage oribufimage; /原始緩沖區(qū)圖像graphics2d bufimageg; /緩沖區(qū)圖像的圖形環(huán)境string path, filename, dir; / 需要查看圖片的路徑string pics; / 目錄下所

5、有指定格式的圖片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; / 旋轉(zhuǎn)角度filter filterjpg; public pic() initcomponents(); suppresswarnings(unchecke

6、d) / 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 ja

7、vax.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

8、 = 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.even

9、t.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 j

10、ava.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.

11、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) preb

12、tnmouseclicked(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 mousecli

13、cked(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.addmouselisten

14、er(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.se

15、ttext(退出); 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

16、= 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.grouplayou

17、t.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) .ad

18、dpreferredgap(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_val

19、ue) .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_va

20、lue) .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,

21、 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,

22、 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.

23、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.gr

24、ouplayout.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) .addc

25、omponent(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();jfil

26、echooser chooser = new jfilechooser();/ 只顯示文件夾和jpg格式的文件filenameextensionfilter filter = new filenameextensionfilter(*.jpg, jpg);/建立過濾器,只顯示jpg chooser.setfilefilter(filter); chooser.setcurrentdirectory(new file(); int returnval = chooser.showopendialog(msg); / 根據(jù)返回值判斷是否選擇了文件 if(returnval = jfilechoos

27、er.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.

28、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);angl

29、erightbtn.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

30、chooser = new jfilechooser();/ 只顯示文件夾和jpg格式的文件filenameextensionfilter filter = new filenameextensionfilter(*.jpg, jpg);/建立過濾器,只顯示jpg chooser.setfilefilter(filter); chooser.setcurrentdirectory(new file(); int returnval = chooser.showopendialog(msg); / 根據(jù)返回值判斷是否選擇了文件 if(returnval = jfilechooser.approv

31、e_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.equalsign

32、orecase(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

33、.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) / 循環(huán)瀏覽圖片if(i = 0) i = pics.length-1; else i -;d

34、ir = 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 + + pics

35、i;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 scale

36、x = 0.2;scaley = 0.2;pathinfo.setforeground(color.red); pathinfo.settext(已經(jīng)縮至最??!);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: privat

37、e 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 angleleftbtnmous

38、eclicked(java.awt.event.mouseevent evt) isangled = true;radius += -math.pi / 2; / 設(shè)置每次左旋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; / 設(shè)置每次右旋45度角repaint();ori

39、picbtn.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=pi

40、cs.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 msgs

41、ave = 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 re

42、turnval = chooser.showsavedialog(msgsave); / 根據(jù)返回值判斷是否選擇了文件路徑 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 loadimage

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論