2021年Java畫圖軟件設(shè)計報告_第1頁
2021年Java畫圖軟件設(shè)計報告_第2頁
2021年Java畫圖軟件設(shè)計報告_第3頁
已閱讀5頁,還剩13頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、佛山科學(xué)技術(shù)學(xué)院可視化編程技術(shù)課程設(shè)計報告畫圖軟件設(shè)計學(xué)生姓名周敏婷學(xué)號211914123年級專業(yè)11級教育技術(shù)學(xué)2班指導(dǎo)老師容汝佳學(xué)院教育科學(xué)學(xué)院廣東佛山提交日期213年6月目錄 前言 (2)2概要設(shè)計 (3)1 開發(fā)環(huán)境 (3)2 畫圖軟件功能 (3)3 界面設(shè)計 (3)4 類的框架結(jié)構(gòu)圖 (4) 詳細(xì)設(shè)計 (4)1 使用的java類的說明 (4)2 類的主要方法 (5)1 顏色選擇器 (5)2 控制畫筆樣式 (5)3 選取顏色按鈕的監(jiān)聽件類 (6)4 設(shè)計總體認(rèn)識 (6)5 程序流程圖 (7) 運行結(jié)果 (7) 測試分析 (8)1 程序運行情況 (8) 源程序 (8)參考文獻(xiàn) (14)設(shè)

2、計總結(jié) (14)摘要該程序是一個圖形界面的簡單的java畫圖軟件,具有良好的界面,使用人員能快捷簡單地進(jìn)行操作。該畫圖軟件操作較為簡單,只需要一直按著左鍵就能根據(jù)你鼠標(biāo)移動的方面,畫出你想要的圖案。你也可以選擇你自己想到的顏色和畫筆的粗細(xì)。而且可以顯示你當(dāng)前的畫筆的狀態(tài)。界面為灰白對稱。是一個非常簡單的作圖工具,讓人能輕松上手。關(guān)鍵字java,畫圖類,方法,事件1 前言隨著科學(xué)技術(shù)的不斷發(fā)展,計算機(jī)已經(jīng)成為我們工作學(xué)習(xí)和生活中不可缺少的工具。文本編輯器是個人計算機(jī)最司空見慣的應(yīng)用程序了,在學(xué)習(xí)了java語言之后,我決定使用java語言編寫一個簡單的畫圖工具,可以實現(xiàn)簡單的畫圖作圖功能,滿足日常

3、基本的工作學(xué)習(xí)和娛樂需要。java是由sun公司開發(fā)的新一代純面向?qū)ο蟮木W(wǎng)絡(luò)編程語言。其目標(biāo)是建立一種在任意種機(jī)器、任一種操作系統(tǒng)的網(wǎng)絡(luò)環(huán)境中運行的軟件,實行所謂的“程序?qū)懸淮?,到處運行”的目標(biāo)。正因為如此,java已成為當(dāng)今internet上最流行、最受歡迎的一種程序開發(fā)語言。java開發(fā)小組把java按特性分為基本版、移動版、企業(yè)版,每個版本有一個軟件開發(fā)包。java基本版本叫java 2標(biāo)準(zhǔn)版(java 2 standard edition,j2se),它包含建立java應(yīng)用程序或者是applet所需的應(yīng)用程序編程接口(api)。java 2移動版(the java 2 mobile e

4、dition,j2me)包含創(chuàng)建無線java應(yīng)用程序的api。還有java 2企業(yè)版(the java 2 enterprise,j2ee)是j2se的增強(qiáng)版本,包含建立多層架構(gòu)應(yīng)用程序api。java語言是由c+語言發(fā)展起而來的,是一種徹底的面向?qū)ο蟮某绦蛟O(shè)計語言。作為一種純面向?qū)ο蟮某绦蛟O(shè)計語言,它非常適合大型軟件的開發(fā)。java 語言去掉了c+語言的一些容易引起錯誤的特性。java語言的特點有面向?qū)ο?、跨平臺、安全性、多線程和圖形功能強(qiáng)。2 概要設(shè)計1開發(fā)環(huán)境開發(fā)平臺microsoft windows xp professional service pack 2開發(fā)工具jbuilder

5、27 + jdk _22畫圖軟件功能功能1按著鼠標(biāo)左鍵能隨心所欲的畫出想要的圖形功能2可自助地選擇畫筆的粗細(xì)功能3可自助地顏色選擇功能4可以顯示你當(dāng)前的畫筆狀態(tài)3界面設(shè)計圖3 畫圖面板4類的框架結(jié)構(gòu)圖drawpane屬性package kasa;操作public class drawpane extends frameclass buttoncoloraction implements actionlistenerc lass buttoncursor extends mouseadapterclass buttonstrokeaction implements actionlistenerc

6、lass palette extends panel implements mouselistener,mousemotionlistener圖43詳細(xì)設(shè)計1畫圖軟件使用的java類的說明類名drawpane類作用主類,繼承的父類 frame類,構(gòu)造方法drawpane()實現(xiàn)了放各種組件,界面的構(gòu)造,構(gòu)造畫圖板顏色選擇器和畫筆的粗細(xì)等功能類名buttoncoloraction 實現(xiàn)的接口actionlistener作用選取顏色按鈕的監(jiān)聽事件類監(jiān)聽按鈕動作類名buttoncursor作用鼠標(biāo)進(jìn)入按鈕變換光標(biāo)樣式監(jiān)聽事件類繼承的類mouseadapter 繼承了鼠標(biāo)的適配器類名buttonstr

7、okeaction作用設(shè)置畫筆的監(jiān)聽事件類實現(xiàn)的接口actionlistener 作用選取顏色按鈕的監(jiān)聽事件類監(jiān)聽按鈕動作類名palette 繼承的父類panel類作用畫板類實現(xiàn)的接口mouselistener, mousemotionlistener 重寫了鼠標(biāo)監(jiān)聽器的五個方法mousemoved(mouseevent e)、mousedragged(mouseevent e)、mouseexited(mouseevent e)、mouseentered(mouseevent e)和mousereleased(mouseevent e)。同時實現(xiàn)了mousemotionlistener接口,

8、調(diào)用addmousemotionlistener(this)方法對鼠標(biāo)的動作進(jìn)行監(jiān)聽2類的主要方法1 顏色選擇器panel pane=new panel(new gridlayout(2, 1); / 畫筆顏色選擇器panel panecolor=new panel(new gridlayout(1, 13); / 12 個顏色選擇按鈕button buttoncolor=new button12;color color= color.black, color.blue, color.cyan, color.darkgray,color.gray, color.green, color.mag

9、enta, color.orange,color.pink, color.red, color.white, color.yellow; / 顯示當(dāng)前顏色的面板2控制畫筆樣式panel panestroke=new panel(new gridlayout(1, 13); / 控制畫筆樣式buttonstrokeaction=new buttonstrokeaction();button buttonstroke=new button11;buttonstroke=new button(1);buttonstroke1=new button(3);buttonstroke2=new butto

10、n(5);buttonstroke3=new button(7);buttonstroke4=new button(9);buttonstroke5=new button(11);buttonstroke6=new button(13);buttonstroke7=new button(15);buttonstroke8=new button(17);buttonstroke9=new button();buttonstroke1=new button();drawwidth=new label(顏色, label.center);drawcap=new label(, label.cente

11、r);drawwidth.setbackground(color.lightgray);drawcap.setbackground(color.lightgray);panestroke.add(drawwidth);3選取顏色按鈕的監(jiān)聽事件類class buttoncoloraction implements actionlistener public void actionperformed(actionevent e) colorcolor_temp=(button) e.getsource().getbackground();noncecolor.setbackground(color

12、_temp);palette.setcolor(color_temp);4設(shè)計的總體認(rèn)識ja v a設(shè)計的摘要ja v a設(shè)計的目錄結(jié)構(gòu)ja v a設(shè)計的概要和詳細(xì)設(shè)計ja v a設(shè)計的版權(quán)意識ja v a設(shè)計需要編譯的環(huán)境ja v a設(shè)計的實用性5程序流程圖開始圖3繪制畫圖軟件方法pad圖4運行結(jié)果圖4 畫圖軟件結(jié)果顯示粗細(xì)選擇顏色選擇繪圖繪圖5測試分析1程序運行情況:當(dāng)運行程序的時候,你可以進(jìn)入界面,單擊你所需要的顏色和畫筆的粗細(xì)來進(jìn)行作圖。當(dāng)你覺得你對你的畫不滿意的時候,你可以選擇白色來清除你的畫面。6 程序清單package kasa;import java.awt.basicstro

13、ke;import java.awt.borderlayout;import java.awt.button;import java.awt.color;import java.awt.cursor;import java.awt.dimension;import java.awt.frame;import java.awt.graphics;import java.awt.graphics2d;import java.awt.gridlayout;import import java.awt.panel;import java.awt.renderinghints;import java.a

14、wt.event.actionevent;import java.awt.event.actionlistener;import java.awt.event.mouseadapter;import java.awt.event.mouseevent;import java.awt.event.mouselistener;import java.awt.event.mousemotionlistener;import java.awt.event.windowadapter;import java.awt.event.windowevent;import java.awt.image.buff

15、eredimage;public class drawpane extends frame / 畫板private palette palette=null; / 顯示當(dāng)前顏色的面板private panel noncecolor=null; / 畫筆粗細(xì)private label drawwidth=null; / 畫筆端點的裝飾private label drawcap=null; / 選取顏色按鈕的監(jiān)聽事件類private buttoncoloraction buttoncoloraction=null;/ 鼠標(biāo)進(jìn)入按鈕后光標(biāo)樣式的監(jiān)聽事件類private buttoncursor bu

16、ttoncursor=null; / 畫筆樣式的監(jiān)聽事件private buttonstrokeaction buttonstrokeaction=null;public drawpane() / 設(shè)置標(biāo)題欄文字super(java版畫圖小工具); / 構(gòu)造一個畫圖板palette=new palette();panel pane=new panel(new gridlayout(2, 1); / 畫筆顏色選擇器panel panecolor=new panel(new gridlayout(1, 13); / 12 個顏色選擇按鈕button buttoncolor=new button12

17、;color color= color.black, color.blue, color.cyan, color.darkgray,color.gray, color.green, color.magenta, color.orange,color.pink, color.red, color.white, color.yellow; / 顯示當(dāng)前顏色的面板noncecolor=new panel();noncecolor.setbackground(color.black);panecolor.add(noncecolor);buttoncoloraction=new buttoncolor

18、action();buttoncursor=new buttoncursor();for (int i=; i buttoncolor.length; i+) buttoncolori=new button();buttoncolori.setbackground(colori);buttoncolori.addactionlistener(buttoncoloraction);buttoncolori.addmouselistener(buttoncursor);panecolor.add(buttoncolori);pane.add(panecolor); / 畫筆顏色選擇器panel p

19、anestroke=new panel(new gridlayout(1, 13); / 控制畫筆樣式buttonstrokeaction=new buttonstrokeaction();button buttonstroke=new button11;buttonstroke=new button(1);buttonstroke1=new button(3);buttonstroke2=new button(5);buttonstroke3=new button(7);buttonstroke4=new button(9);buttonstroke5=new button(11);butt

20、onstroke6=new button(13);buttonstroke7=new button(15);buttonstroke8=new button(17);buttonstroke9=new button();buttonstroke1=new button();drawwidth=new label(粗細(xì), label.center);drawcap=new label(, label.center);drawwidth.setbackground(color.lightgray);drawcap.setbackground(color.lightgray);panestroke.

21、add(drawwidth);for (int i=; i buttonstroke.length; i+) panestroke.add(buttonstrokei);buttonstrokei.addmouselistener(buttoncursor);buttonstrokei.addactionlistener(buttonstrokeaction);if (i =8) buttonstrokei.setname(width); else buttonstrokei.setname(cap);if (i=8) panestroke.add(drawcap);pane.add(pane

22、stroke); / 將畫筆顏色選擇器添加到窗體中this.add(pane, borderlayout.north); / 將畫圖板添加到窗體中this.add(palette); / 添加窗口監(jiān)聽,點擊關(guān)閉按鈕時退出程序this.addwindowlistener(new windowadapter() public void windowclosing(windowevent e) system.exit();); / 設(shè)置窗口的大小this.setsize(new dimension(4, 43); / 設(shè)置窗口位置,處于屏幕正中央this.setlocationrelativeto(

23、null); / 顯示窗口this.setvisible(true);public static void main(string args) new drawpane();class buttoncoloraction implements actionlistener public void actionperformed(actionevent e) color color_temp=(button)e.getsource().getbackground();noncecolor.setbackground(color_temp);palette.setcolor(color_temp)

24、;class buttoncursor extends mouseadapter public void mouseentered(mouseevent e) (button) e.getsource().setcursor(new cursor(cursor.hand_cursor);public void mouseexited(mouseevent e) (button) e.getsource().setcursor(new cursor(cursor.default_cursor);class buttonstrokeaction implements actionlistener

25、public void actionperformed(actionevent e) button button_temp=(button) e.getsource();string name=button_temp.getname();if (name.equalsignorecase(width) drawwidth.settext(button_temp.getlabel();palette.setstroke(float.parsefloat(button_temp.getlabel(); else if (name.equalsignorecase(cap) drawcap.sett

26、ext(button_temp.getlabel();if (button_temp.getlabel().equals() palette.setstroke(basicstroke.cap_square); else if (button_temp.getlabel().equals() palette.setstroke(basicstroke.cap_round);class palette extends panel implements mouselistener, mousemotionlistener / 鼠標(biāo)/x/ 坐標(biāo)的位置private int mousex=; / 上一

27、次 x 坐標(biāo)位置private int oldmousex=; / 鼠標(biāo) y 坐標(biāo)的位置private int mousey=; / 上一次 y 坐標(biāo)位置private int oldmousey=; / 畫圖顏色private color color=null; / 畫筆樣式private basicstroke stroke=null; / 緩存圖形private bufferedimage image=null;public palette() this.addmouselistener(this);this.addmousemotionlistener(this); / 默認(rèn)黑色畫筆c

28、olor=new color(, , ); / 設(shè)置默認(rèn)畫筆樣式stroke=new basicstroke(f, basicstroke.cap_round,basicstroke.join_round); / 建立 128 * 124 的 rgb 緩存圖象image=new bufferedimage(128, 124, bufferedimage.type_int_rgb); / 設(shè)置顏色image.getgraphics().setcolor(color.white); / 畫背景image.getgraphics().fillrect(, , 128, 124);public voi

29、d paint(graphics g) super.paint(g); / 轉(zhuǎn)換為 graphics2dgraphics2d g2d=(graphics2d) g; / 獲取緩存圖形 graphics2dgraphics2d bg=image.creategraphics(); / 圖形抗鋸齒bg.setrenderinghint(renderinghints.key_antialiasing,renderinghints.value_antialias_on); / 設(shè)置繪圖顏色bg.setcolor(color); / 設(shè)置畫筆樣式bg.setstroke(stroke); / 畫線,從上

30、一個點到新的點bg.drawline(oldmousex, oldmousey, mousex, mousey); / 將緩存中的圖形畫到畫板上g2d.drawimage(image, , , this);public void update(graphics g) this.paint(g);public basicstroke getstroke() return stroke;public void setstroke(basicstroke stroke) this.stroke=stroke;public void setstroke(float width) this.stroke

31、=new basicstroke(width, stroke.getendcap(), stroke.getlinejoin();public void setstroke(int cap) this.stroke=new basicstroke(stroke.getlinewidth(), cap, stroke.getlinejoin();public color getcolor() return color;public void setcolor(color color) this.color=color;public void mouseclicked(mouseevent mou

32、seevent) public void mousepressed(mouseevent mouseevent) this.oldmousex=this.mousex=mouseevent.getx();this.oldmousey=this.mousey=mouseevent.gety();repaint();public void mousereleased(mouseevent mouseevent) public void mouseentered(mouseevent mouseevent) this.setcursor(new cursor(cursor.crosshair_cur

33、sor);public void mouseexited(mouseevent mouseevent) this.setcursor(new cursor(cursor.default_cursor);public void mousedragged(mouseevent mouseevent) this.oldmousex=this.mousex;this.oldmousey=this.mousey;this.mousex=mouseevent.getx();this.mousey=mouseevent.gety();repaint();public void mousemoved(mouseevent mouseevent) 參考文獻(xiàn)java語言程序設(shè)計.清華大學(xué)出版社.丁振凡主編設(shè)計總結(jié)經(jīng)過一個學(xué)期的java學(xué)習(xí),對java編程有了一定的認(rèn)識,在做這個課程設(shè)計的時候,剛開始感覺自己無從

溫馨提示

  • 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

提交評論