java課程設(shè)計(jì)報(bào)告_第1頁(yè)
java課程設(shè)計(jì)報(bào)告_第2頁(yè)
java課程設(shè)計(jì)報(bào)告_第3頁(yè)
java課程設(shè)計(jì)報(bào)告_第4頁(yè)
java課程設(shè)計(jì)報(bào)告_第5頁(yè)
已閱讀5頁(yè),還剩12頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、淮海 工學(xué)院 計(jì)算機(jī)工程學(xué)院課程設(shè)計(jì)報(bào)告設(shè)計(jì)名稱: 面向?qū)ο笳n程設(shè)計(jì)選題名稱: 圖像瀏覽器的設(shè)計(jì)與實(shí)現(xiàn)姓 名:學(xué) 號(hào)一專業(yè)班級(jí): 網(wǎng)絡(luò)工程122班系(院): 計(jì)算機(jī)工程學(xué)院設(shè)計(jì)時(shí)間: 2014.3.122014.4.10設(shè)計(jì)地點(diǎn):軟件實(shí)驗(yàn)室、教室成績(jī):指導(dǎo)教師評(píng)語(yǔ):簽名:面向?qū)ο笳n程設(shè)計(jì)報(bào)告第 17頁(yè),共 16頁(yè)1.課程設(shè)計(jì)目的1V!"!m 1!一+*,?。?quot;:« H mm :,n,* HH*加,一!:m,:HF,!:» f ,面向象程序設(shè)計(jì)是一門實(shí)踐性很強(qiáng)的計(jì)算機(jī)專業(yè)基礎(chǔ)課程,課程設(shè)計(jì)是學(xué)習(xí)完該課程后進(jìn)行的一次較全面的綜合練習(xí)。其目的在于通過(guò)實(shí)踐加深學(xué)

2、生對(duì)面向?qū)ο蟪绦蛟O(shè)計(jì) 的理論、方法和基礎(chǔ)知識(shí)的理解,掌握使用Java語(yǔ)言進(jìn)行面向?qū)ο笤O(shè)計(jì)的基本方法,提高運(yùn)用面向?qū)ο笾R(shí)分析實(shí)際問(wèn)題、解決實(shí)際問(wèn)題的能力。2.課程設(shè)計(jì)任務(wù)與要求:課程設(shè)計(jì)可選用NetBeans、Eclipse、JBuilder等作為開(kāi)發(fā)平臺(tái)以提高開(kāi)發(fā)效率,盡可能熟 練掌握其中一種集成開(kāi)發(fā)環(huán)境。建議采用UML建模技術(shù)進(jìn)行系統(tǒng)白分析設(shè)計(jì),在 Visio中畫出系統(tǒng)用例圖和類圖,并將 UML圖復(fù)制到設(shè)計(jì)報(bào)告中。通過(guò)這次設(shè)計(jì),要求掌握以下內(nèi)容:1)面向?qū)ο蠹夹g(shù)中的繼承與多態(tài)(重載和覆蓋)機(jī)制、各種修飾符的使用2)類、包、接口的定義與使用3)常用工具類與算法的實(shí)現(xiàn)(數(shù)組、向量、字符串、鏈表

3、)4) Java常用標(biāo)準(zhǔn)GUI組件及其事件處理5) Java的異常處理機(jī)制6) Java的數(shù)據(jù)庫(kù)連接技術(shù)7) Java的多線程技術(shù)與動(dòng)畫制作8) Java的網(wǎng)絡(luò)編程關(guān)于圖象瀏覽器的設(shè)計(jì)與實(shí)現(xiàn):設(shè)計(jì)一個(gè)能實(shí)現(xiàn)圖象瀏覽與編輯功能的 Java程序,包括如下功能:1)從已有的圖象文件列表中選擇某一個(gè),即可顯示該圖象,并可做放大縮小等變換。2)在畫布區(qū)域上可以進(jìn)行各種規(guī)則圖形的繪制(如:線段、矩形、圓等),還可通過(guò)鼠標(biāo) 的拖動(dòng)自由繪圖。3)可以連續(xù)播放所選文件夾下的所有圖象。9) 課程設(shè)計(jì)說(shuō)明書(一)圖象瀏覽器概要設(shè)計(jì):根據(jù)需求分析,用例圖如下所示:要選擇圖片,則需要文件的讀寫功能,要import進(jìn)io

4、包;總體的框架用PicBrowseFrame類實(shí)現(xiàn),在定義菜單欄menuBar里放置文件打開(kāi)選項(xiàng), 用Up、Donw兩個(gè)按鈕實(shí)現(xiàn)上一頁(yè),下一頁(yè)的功能。要在面板下方放置對(duì)圖片的預(yù)覽滾 動(dòng)條,滾動(dòng)條上放上一頁(yè)下一頁(yè)的按鈕??s放圖片功能通過(guò)改變圖片的長(zhǎng)寬實(shí)現(xiàn),即是實(shí)現(xiàn)對(duì)圖片的放大縮小,則設(shè)置 picDownScanle()方法和picUpScanle()方法改變圖片大小。 左上角文件菜單選項(xiàng)中設(shè)置 exit退出菜單,通過(guò)System.exit(l)實(shí)現(xiàn)。要實(shí)現(xiàn)自動(dòng)播放圖 片的功能,要用到timer類,通過(guò)打開(kāi)一個(gè)文件夾,每隔一段時(shí)間加載一張圖片。要實(shí)現(xiàn) 鼠繪圖形功能要有 mouseListener,

5、要重寫里面的方法。分別要實(shí)現(xiàn)畫圓、畫直線、畫方 形等操作。(二)圖象瀏覽器詳細(xì)設(shè)計(jì):程序里主要有八個(gè)類,分別是 PicBrowseFrame (主框架),F(xiàn)ileChooser (文件選擇類) , ImagePreview (圖片預(yù)覽類),imgVisible (圖片復(fù)制移動(dòng)類),UpListener (實(shí)現(xiàn)放大圖片監(jiān)聽(tīng)類), MoveListener (實(shí)現(xiàn)移動(dòng)圖片監(jiān)聽(tīng)類),CopyListener (實(shí)現(xiàn)復(fù)制圖片監(jiān)聽(tīng)類) ,LoadListener (實(shí)現(xiàn) 加載圖片監(jiān)聽(tīng)類)。UML類圖關(guān)系如下所示:PicBrowseFrameFileChooserpublic void showGUI()

6、public static void main(String args)public void initListener()public PicBrowseFrame。Stringfiles;ParentPa th,filename,filePath,J panel scanlePane ,int tag ,ImageIcon igvoid FileChoosercr()public void showGUI()public static void main(String args)public void initListener()public PicBrowseFrame。private

7、void preView()void preViewMove(inttag)public void picUpScanle()UpListenerLoadListenerLvoidactionPerf ormed()CopyListenervoid actionPerf ormed()MoveListenerImagePreviewvoid actionPerformed()voidactionPerforimgVisiblePublic ImageIcon createImage(Stringmed()注:ImageIcon thumbnailFile filepath)public voi

8、d PicCopy()public void PicMove()publicImagePreview(JFileChooser fc) public void loadImage()代表內(nèi)部類與外部類之間的關(guān)系表示類之間是關(guān)聯(lián)的關(guān)系程序中的類:(1) PicBrowseFrame類用作整體框架其中定義了 JFrame類的Frame為主窗體,JPanel類的conPane為圖片顯示的區(qū)域, JMenuI類的File是文件菜單,Edit是編輯菜單,Scanle是縮放菜單,rotate是旋轉(zhuǎn)菜單, JMenuItem類的tempitem為菜單選項(xiàng),菜單里又包括了打開(kāi),退出,放大,縮小等功能 的選項(xiàng)。

9、兒abel類的標(biāo)簽lab,用于加載圖片。在窗體底部設(shè)了上一頁(yè),下一頁(yè)按鈕以及 小圖預(yù)覽滾動(dòng)條。(2) FileChooser類實(shí)現(xiàn)圖片的選擇把選的圖加載進(jìn)來(lái),取它的文件地址,用定義的方法對(duì)它進(jìn)行相應(yīng)的縮放,看下一張圖,預(yù)覽等操作。(3) LoadListener類調(diào)用 FileCh.FileChoosercr()實(shí)現(xiàn)力口載圖片的功能。(4) CopyListener 類通過(guò) imgVisible().PicCopy(FileChooser.filePath, savePath發(fā)現(xiàn)對(duì) 圖片復(fù)制操作的監(jiān)聽(tīng)。(5) MoveListener類通過(guò) imgVisible().PicMove(FileC

10、hooser.filePath, savePath發(fā)現(xiàn)對(duì) 圖片移動(dòng)操作的監(jiān)聽(tīng)。(6) UpListener類通過(guò)調(diào)用FileCh.picUpScanle()的方法,實(shí)現(xiàn)對(duì)圖片放大操作的監(jiān)聽(tīng)。(7) DownListener類通過(guò)調(diào)用FileCh.picDownScanle()的方法,實(shí)現(xiàn)對(duì)圖片縮小操作 的監(jiān)聽(tīng)。(8) imgVisible類,里面定義了相對(duì)應(yīng)的方法,實(shí)現(xiàn)對(duì)圖片的復(fù)制移動(dòng)等操作。(9) ImagePreview 類繼承于 JComponent 實(shí)現(xiàn)了 PropertyChangeListener接口,主 要是用于在窗體底部的圖片預(yù)覽。(10) TimerAction類,繼承于Ab

11、stractAction類,用于控制自動(dòng)播放圖片。(11) OpenFileAction類,繼承于 AbstractAction類,用于打開(kāi)一個(gè)有圖片的文件夾, 并且調(diào)用timer.start()方法,設(shè)置計(jì)時(shí)器,每隔一段時(shí)間打開(kāi)一張圖片。程序的方法及其實(shí)現(xiàn):(1) public void showGUI()方法實(shí)現(xiàn)了對(duì)圖片瀏覽器的整體布局和對(duì)按鈕的初始化。 主要 是通過(guò) conPane.setLayout(new BorderLayout (); menuBar.add (File); File.add (tempitem); Scanle.add(tempItem);menuBar.add

12、(Edit);lineButton, rectangleButton, ovalButton colorChooser, clearButton;panel.setLayout(new BorderLayout(); Imageicon icon = new imgVisible().createimage("");lab = new JLabel(icon);等代碼實(shí)現(xiàn)。對(duì)面板的初始化,以實(shí)現(xiàn) 繪圓、繪方形等操作。實(shí)現(xiàn)此操作的部分代碼如下:panel2 = new JPanel() public void paint(Graphics g) g.setColor(colo

13、r);if (drawMode = DRAW_LINE) g.drawLine(lp.x, Ip.y, cp.x, cp.y); 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.

14、clearRect(lp.x, lp.y, Math.abs(lp.x - cp.x), Math.abs(lp.y - cp.y);(2) public static void main(String args口)主方法,構(gòu)建一個(gè)新窗體.public static void main(String args口)new PicBrowseFrame().showGUI(); °(3) public void FileChoosercr()方法進(jìn)行文件選擇,同時(shí)通過(guò)添加滾動(dòng)條獲取圖片路 徑實(shí)現(xiàn)對(duì)圖片預(yù)覽。(4) private void preView()在FileChoosercr(

15、)中被弓I用,對(duì)獲取的文件地址進(jìn)行減一 或加一操作,實(shí)現(xiàn)圖片小圖預(yù)覽。(5) private void preViewMove(int tag)滾動(dòng)條的實(shí)現(xiàn)方法, 通過(guò) ImageIcon iconScanle =new ImageIcon(ParentPath + ""+ filesi)獲取圖片信息,加了對(duì)空指針的異常處理 catch (java.lang.NullPointerException e)。(6) public void picUpScanle()放大圖片的方法,先獲取圖片,再對(duì)圖片長(zhǎng)寬進(jìn)行 width+=50;heigth+=50;力口大操作。實(shí)現(xiàn)該操作部

16、分代碼:srcImg = new ImageIcon(filePath);width += 50;heigth += 50;Imageicon scalelcon = new ImageIcon(new imgVisible().getScaledImage(srcImg.getImage(), width, heigth, 1);PicBrowseFrame.lab.setlcon(scalelcon);(7) public void picDownScanle()縮小圖片的方法,先獲取圖片,再對(duì)圖片長(zhǎng)寬進(jìn)行 width-=50;heigth-=50;加大操作,與放大類似。(8) publi

17、c void initListener()里面有重寫 MouseListener接口和 ActionListener 接口, 主要是 重寫了 public void mousePressed(MouseEvent e)方法和 public void mouseReleased(MouseEvent法。實(shí)現(xiàn)的代碼如下:mouseListener = new MouseListener() public void mouseClicked(MouseEvent e) public void mouseEntered(MouseEvent e) public void mouseExited(Mou

18、seEvent e) public void mousePressed(MouseEvent e) lp = e.getPoint();public void mouseReleased(MouseEvent e) cp = e.getPoint();panel2.repaint();;ActionListener接口里面的操作分別是對(duì)繪圖按鈕的響應(yīng)。(9) public PicBrowseFrame(心勾造方法,添加對(duì)鼠標(biāo)事件和繪圖按鈕的監(jiān)聽(tīng)。(10) public ImagePreview(JFileChooser fc)構(gòu)造方法加載滾動(dòng)條 scanlePanef口對(duì)其的 監(jiān)聽(tīng) fc.ad

19、dPropertyChangeListener(this疾現(xiàn)預(yù)覽。(11) public void loadImage()加載圖片,通過(guò)判斷文件是否存在,再實(shí)行打開(kāi)文件的 操作。(12) public void PicCopy(String path1,String path2)通過(guò)獲取文件路徑 String path1,FileInputStream in = new FileInputStream(path1),再用文件流輸出該路徑到另一位置FileOutputStream out = new FileOutputStream(path2)對(duì)文件進(jìn)行復(fù)制。(13 ) public void

20、 PicMove(String path1,String path2)通過(guò)獲取文件路徑,再 PicCopy(path1, path2);,復(fù)制原路徑,然后String cmd = "del " + pathl刪除原來(lái)的路徑實(shí)現(xiàn) 對(duì)文件進(jìn)行移動(dòng)。(14) private OpenFileAction()打開(kāi)一個(gè)圖片文件夾,F(xiàn)ile f= chooser.getSelectedFile() 通過(guò)判斷index=files!=null&&files.length>0?0:-1 ,讓打開(kāi)的文件夾不為空,如果 (files!=null&&巾les

21、.length>0)再設(shè)置計(jì)時(shí)器timer.start(),每隔一段時(shí)間打開(kāi)一張圖片。4 .課程設(shè)計(jì)成果最初打開(kāi)時(shí)的界面:對(duì)圖片進(jìn)行復(fù)制點(diǎn)擊這里;,囹 Picture Browse文件編輯縮湎畫線方形擦除復(fù)制到移動(dòng)到然后選擇你要復(fù)制到的文件夾:已復(fù)制到該文件夾:2014/4/31 哂建18 KB_ PicViewerjava2014/3/20 15:47JAVA郊13 KB_血挪2013/12/1517:53JAVA 鄴2 KB_ Serverjava2013/12/1517:423 KBTesthlyjwa2M3/11/2912:20JAVA 則UB對(duì)于移動(dòng)則同樣是這樣的類似操作,只是

22、原圖片會(huì)被刪掉。 自動(dòng)播放圖片功能,點(diǎn)擊這里:目 Picture 3ro自動(dòng)播放圖片的效果:隨機(jī)截取的某時(shí)刻的圖片:過(guò)一段時(shí)間后隨機(jī)截取的圖片: Picture Browse文件 彝的編曲自動(dòng)腰的智健1霸亞 崛建i方膨畫畫鼠繪涂鴉功能的效果(畫圓、畫方形、畫直線)端盤函版畫轅一 r 一無(wú)形畫囪WS"一一派G可以選擇自己喜歡的顏色,只要點(diǎn)擊顏色按鈕即可:頊克樣品文本樣品交本樣品月本樣品文本樣品文本祥品文本確定 |敢滂重曖退)或者是自定義顏色:清除涂鴉效果如圖所示:5 .課程設(shè)計(jì)心得這次課程設(shè)計(jì)先是參考了網(wǎng)上的代碼然后自己再補(bǔ)充了一些更多的功能,最開(kāi)始本來(lái)是想把那些代碼都放在一個(gè)文件里,

23、可是那樣看起來(lái)很不清晰,所以最后有 4個(gè)java文 件,同時(shí)因?yàn)樵谶@期間恰好參加了學(xué)校的java培訓(xùn),學(xué)會(huì)了使用eclipse軟件,這個(gè)軟 件能列出詳細(xì)的各類之間的聯(lián)系和各方法等之間的聯(lián)系,這樣在邊編譯邊分析的過(guò)程中, 有了更大的幫助。圖片瀏覽器最開(kāi)始實(shí)現(xiàn)了放大、縮小、復(fù)制、移動(dòng)等功能,然后是想加上旋轉(zhuǎn)圖片的功能,也找到了參考的資料,可是放進(jìn)自己的代碼中就實(shí)現(xiàn) 不了了,出現(xiàn)了響應(yīng)不了的問(wèn)題,改了很久沒(méi)有頭緒。后來(lái)又著手添加起了鼠繪圖形的功能,最開(kāi)始不太懂代碼的意義,添加上了以后雖然編譯通過(guò),但是總是在運(yùn)行的時(shí)候出現(xiàn)(java.lang.NullPointerException)即空指針的錯(cuò)誤,并且這個(gè)錯(cuò)誤困擾了我有一個(gè)多星期,查閱了很久知道是可能是引用類型在未賦值的情況下(默認(rèn)為null)卻執(zhí)行了某些具體的操作出現(xiàn)了這樣的異常,需要看返回的錯(cuò)誤信 息,看看是哪個(gè)引用類型未被初始化而導(dǎo)致??墒钦业藉e(cuò)誤的那行卻未查出問(wèn)題。想了很久,并

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論