




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、java課程設(shè)計(jì)報(bào)告題目: 一個(gè)簡單的繪畫板 班級: 學(xué)號: 姓名: 指導(dǎo)老師: 完成起止日期: 2011年12月7日 2011年12月26日目錄1、題目與要求 31.1、題目 31.2、參考文獻(xiàn) 32、功能描述 43、設(shè)計(jì)思想與系統(tǒng)結(jié)構(gòu)53.1、類設(shè)計(jì)53.2、結(jié)構(gòu)圖64、用戶界面75、代碼分析86、實(shí)驗(yàn)總結(jié)19課程設(shè)計(jì)題目與要求1.1 .課題題目參考windows附件中的繪圖工具,使用java語言設(shè)計(jì)并實(shí)現(xiàn)一個(gè)簡單的繪圖板。(界面使用awt或swing)a) 實(shí)現(xiàn)各類基本圖形的編輯b) 實(shí)現(xiàn)文件的保存和讀取功能。1.2 .參考文獻(xiàn)1java編程思想,機(jī)械工業(yè)出版社,1999年4月2java
2、項(xiàng)目設(shè)計(jì)與開發(fā)范例,電子工業(yè)出版社,2005年4月,唐小軍等3java開放源碼編程,電子工業(yè)出版社,2005年1月,沃納斯4.java程序設(shè)計(jì),清華大學(xué)出版社,2004年8月,雍俊海功能描述a) 畫筆功能程序?qū)崿F(xiàn)畫筆功能,可以拖動(dòng)鼠標(biāo)畫任意曲線,曲線顏色可從調(diào)試板選擇。b) 直線功能程序?qū)崿F(xiàn)畫直線功能,可以以任意點(diǎn)為起點(diǎn),拖動(dòng)鼠標(biāo)畫任意長的線段,線段顏色可由調(diào)試板選擇。c) 矩形功能程序?qū)崿F(xiàn)畫矩形功能,可以以任意點(diǎn)為矩形的左上角端點(diǎn),拖動(dòng)鼠標(biāo)畫任意矩形,矩形顏色可由調(diào)試板選擇。d) 橢圓功能程序?qū)崿F(xiàn)畫橢圓功能,可以以任意點(diǎn)為橢圓的左端邊界,畫任意橢圓,橢圓顏色可由調(diào)試板選擇。e) 調(diào)色板功能程
3、序?qū)崿F(xiàn)調(diào)試板功能,可以選擇畫筆的顏色和填充圖形的顏色。f) 清除功能程序?qū)崿F(xiàn)清除畫板功能,可以清除以前在畫板上畫的所有圖形。g) 文件保存程序?qū)崿F(xiàn)文件保存功能,可以保存畫圖文件,可以在以后繼續(xù)編輯。h) 文件打開程序?qū)崿F(xiàn)打開以前保存的畫圖文件的功能,可以打開以前保存的圖片,繼續(xù)編輯。設(shè)計(jì)思想與系統(tǒng)結(jié)構(gòu)3.1.類設(shè)計(jì) 圖3.13.2.結(jié)構(gòu)圖界 面菜單欄工作區(qū)線矩形圓形保存打開鼠標(biāo)動(dòng)作監(jiān)聽選 擇繪制菜單選擇監(jiān)聽 圖3.2用戶界面 圖4.1操作:畫直線,曲線,圓,橢圓,矩形 圖4.2代碼分析import java.awt.*; import java.awt.event.*; import java
4、.util.*; import javax.swing.*;import java.awt.geom.*; import java.io.*; public class painting public static void main(string args) new paintboard(畫板); /*點(diǎn)*/class point implements serializable /對象序列化接口int x,y; /點(diǎn)坐標(biāo)color col; /顏色int tool; /工具類型int boarder; /邊界point(int x, int y, color col, int tool, i
5、nt boarder) this.x = x; this.y = y; this.col = col; this.tool = tool; this.boarder = boarder; /*畫板*/class paintboard extends frame implements actionlistener,mousemotionlistener,mouselistener,itemlistener int x = -1, y = -1; int con = 1;/畫筆大小 int econ = 5;/橡皮大小 int toolflag = 0;/toolflag:工具標(biāo)記 /*toolf
6、lag工具對應(yīng)表: (0-畫筆);(1-橡皮);(2-清除); (3-直線);(4-圓);(5-矩形); (6-撤銷) */color c = new color(0,0,0); /畫筆顏色 basicstrokesize=newbasicstroke(con,basicstroke.cap_butt,basicstroke.join_bevel); /畫筆粗細(xì)point cutflag = new point(-1, -1, c, 6, con);/截?cái)鄻?biāo)志 vector paintinfo = null;/點(diǎn)信息向量組 int n = 1; fileinputstream picin =
7、null; fileoutputstream picout = null; objectinputstream vin = null; objectoutputstream vout = null; / *工具面板-畫筆,直線,圓,矩形,橡皮,清除*/ panel toolpanel; /畫板組件jbutton eraser, drline,drcircle,drrect; /橡皮,畫線,畫圓,畫矩形jbutton clear ,pen; /清除,鉛筆choice sizechoice,eraserchoice; /選擇顏色,選擇畫筆大小,選擇橡皮大小jbutton colchooser; /
8、調(diào)色板label 大小b,大小e; /保存功能 jbutton openpic,savepic; /打開,保存按鈕filedialog openpicture,savepicture; /打開,保存對話框paintboard(string s) super(s); addmousemotionlistener(this); addmouselistener(this); paintinfo = new vector(); /點(diǎn)信息向量組/*各工具按鈕及選擇項(xiàng)*/ /畫筆大小選擇 sizechoice = new choice(); sizechoice.add(1); sizechoice.a
9、dd(3); sizechoice.add(5); sizechoice.add(7); sizechoice.add(9); sizechoice.add(11); sizechoice.add(15); sizechoice.add(19); sizechoice.additemlistener(this); /事件監(jiān)聽/橡皮大小選擇 eraserchoice = new choice();eraserchoice.add(2);eraserchoice.add(5); eraserchoice.add(9); eraserchoice.add(13); eraserchoice.add(
10、17); eraserchoice.add(21); eraserchoice.add(25); eraserchoice.additemlistener(this); /事件監(jiān)聽toolpanel = new panel();color bc=new color(0,255,0);/jbutton背景色clear = new jbutton(清除);/清除/clear.seticon(clearicon);clear.setbackground(bc);eraser = new jbutton(橡皮);eraser.setbackground(bc);pen = new jbutton(畫筆
11、);/畫筆/pen.seticon(penicon);pen.setbackground(bc);drline = new jbutton(直線); drline.setbackground(bc);drcircle = new jbutton(圓形); drcircle.setbackground(bc);drrect = new jbutton(矩形); drrect.setbackground(bc);openpic = new jbutton(打開);/打開/openpic.seticon(openicon);openpic.setbackground(bc);savepic = ne
12、w jbutton(保存); /保存/savepic.seticon(saveicon);savepic.setbackground(bc);colchooser = new jbutton(調(diào)色板); colchooser.setbackground(bc);/各組件事件監(jiān)聽 clear.addactionlistener(this); eraser.addactionlistener(this); pen.addactionlistener(this); drline.addactionlistener(this); drcircle.addactionlistener(this); dr
13、rect.addactionlistener(this); openpic.addactionlistener(this); savepic.addactionlistener(this); colchooser.addactionlistener(this); color lc=new color(150,150,150);/顏色 = new label(畫筆顏色,label.center); /顏色.setbackground(lc);大小b = new label(畫筆大小,label.center); 大小b.setbackground(lc);大小e = new label(橡皮大小
14、,label.center); 大小e.setbackground(lc);/面板添加組件 toolpanel.add(pen); /畫筆toolpanel.add(drline); /畫直線toolpanel.add(drcircle); /畫圓toolpanel.add(drrect); /畫矩形toolpanel.add(大小b);/畫筆大小標(biāo)簽toolpanel.add(sizechoice); /畫筆大小選項(xiàng)toolpanel.add(colchooser); /調(diào)色板toolpanel.add(eraser); /橡皮按鈕toolpanel.add(大小e); /橡皮大小標(biāo)簽too
15、lpanel.add(eraserchoice); /橡皮大小選項(xiàng)toolpanel.add(clear); /清除toolpanel.add(openpic); /打開toolpanel.add(savepic); /保存/工具面板添加到applet面板 add(toolpanel,borderlayout.north); setbounds(0,0,1000,700);/畫板邊界大小 setvisible(true); validate(); openpicture = new filedialog(this,打開,filedialog.load); /文件打開對話框openpicture
16、.setvisible(false); savepicture = new filedialog(this,保存,filedialog.save); /文件保存對話框savepicture.setvisible(false); openpicture.addwindowlistener(new windowadapter()public void windowclosing(windowevent e)openpicture.setvisible(false); ); /打開窗口事件監(jiān)聽savepicture.addwindowlistener(new windowadapter() publ
17、ic void windowclosing(windowevent e) savepicture.setvisible(false); ); /保存窗口事件監(jiān)聽addwindowlistener(new windowadapter() public void windowclosing(windowevent e) system.exit(0); ); /主程序窗口事件監(jiān)聽 /*畫圖*/public void paint(graphics g) graphics2d g2d = (graphics2d)g; /二維圖形point p1,p2; /點(diǎn)n = paintinfo.size(); /
18、點(diǎn)的個(gè)數(shù)if(toolflag=2) g.clearrect(0,0,getsize().width,getsize().height);/清除畫板內(nèi)容for(int i=0; in ;i+) p1 = (point)paintinfo.elementat(i); p2 = (point)paintinfo.elementat(i+1); size = new basicstroke(p1.boarder,basicstroke.cap_butt,basicstroke.join_bevel); g2d.setcolor(p1.col); g2d.setstroke(size); if(p1.
19、tool=p2.tool) /判斷點(diǎn)的類型 switch(p1.tool) case 0:/畫筆 line2d line1 = new line2d.double(p1.x, p1.y, p2.x, p2.y); g2d.draw(line1); break; case 1:/橡皮 g.clearrect(p1.x, p1.y, p1.boarder, p1.boarder); break; case 3:/畫直線 line2d line2 = new line2d.double(p1.x, p1.y, p2.x, p2.y); g2d.draw(line2); break; case 4:/
20、畫圓 ellipse2d ellipse = new ellipse2d.double(p1.x, p1.y, math.abs(p2.x-p1.x) , math.abs(p2.y-p1.y); g2d.draw(ellipse); break; case 5:/畫矩形 rectangle2d rect = new rectangle2d.double(p1.x, p1.y, math.abs(p2.x-p1.x) , math.abs(p2.y-p1.y); g2d.draw(rect); break; case 6:/截?cái)?,跳過 i=i+1; break; default : /end
21、switch /end if /end for /*事件處理*/public void itemstatechanged(itemevent e) if(e.getsource()=sizechoice)/畫筆大小 string selected = sizechoice.getselecteditem(); if(selected=1) con = 1; size = new basicstroke(con,basicstroke.cap_butt,basicstroke.join_bevel); else if(selected=3) con = 3; size = new basicst
22、roke(con,basicstroke.cap_butt,basicstroke.join_bevel); else if(selected=5) con = 5; size = new basicstroke(con,basicstroke.cap_butt,basicstroke.join_bevel); else if(selected=7) con = 7; size = new basicstroke(con,basicstroke.cap_butt,basicstroke.join_bevel); else if(selected=9) con = 9; size = new b
23、asicstroke(con,basicstroke.cap_butt,basicstroke.join_bevel); else if(selected=11) con = 11; size = new basicstroke(con,basicstroke.cap_butt,basicstroke.join_bevel); else if(selected=15) con = 15; size = new basicstroke(con,basicstroke.cap_butt,basicstroke.join_bevel); else if(selected=19) con = 19;
24、size = new basicstroke(con,basicstroke.cap_butt,basicstroke.join_bevel); else if(e.getsource()=eraserchoice)/橡皮大小 string esize = eraserchoice.getselecteditem(); if(esize=2) econ = 2*2; if(esize=5) econ = 5*2; else if(esize=9) econ = 9*2; else if(esize=13) econ = 13*2; else if(esize=17) econ = 17*2;
25、else if(esize=21) econ = 21*2; else if(esize=25) econ = 25*2; /* 單擊鼠標(biāo)拖動(dòng) ,畫筆,橡皮 */public void mousedragged(mouseevent e) point p1 ; switch(toolflag) case 0:/畫筆 x = (int)e.getx(); y = (int)e.gety(); p1 = new point(x, y, c, toolflag, con); paintinfo.addelement(p1); repaint(); break; case 1:/橡皮 x = (int
26、)e.getx(); y = (int)e.gety(); p1 = new point(x, y, null, toolflag, econ);/用無色的點(diǎn)重新覆蓋掉以前的點(diǎn) paintinfo.addelement(p1); repaint(); break; default : /*鼠標(biāo)移動(dòng)*/public void mousemoved(mouseevent e) /*更新*/public void update(graphics g) paint(g); /*單擊鼠標(biāo)拖動(dòng),畫直線,畫圓,畫矩形*/public void mousepressed(mouseevent e) point
27、 p2; switch(toolflag) case 3:/直線 x = (int)e.getx(); y = (int)e.gety(); p2 = new point(x, y, c, toolflag, con); paintinfo.addelement(p2); break; case 4: /圓 x = (int)e.getx(); y = (int)e.gety(); p2 = new point(x, y, c, toolflag, con); paintinfo.addelement(p2); break; case 5: /矩形 x = (int)e.getx(); y =
28、 (int)e.gety(); p2 = new point(x, y, c, toolflag, con); paintinfo.addelement(p2); break; default : /*鼠標(biāo)釋放*/public void mousereleased(mouseevent e) point p3; switch(toolflag) case 0:/畫筆 paintinfo.addelement(cutflag); /截?cái)喈嫻Pbreak; case 1: /橡皮 paintinfo.addelement(cutflag); /截?cái)嘞鹌reak; case 3:/直線 x = (i
29、nt)e.getx(); y = (int)e.gety(); p3 = new point(x, y, c, toolflag, con); paintinfo.addelement(p3); paintinfo.addelement(cutflag); repaint(); break; case 4: /圓 x = (int)e.getx(); y = (int)e.gety(); p3 = new point(x, y, c, toolflag, con); paintinfo.addelement(p3); paintinfo.addelement(cutflag); repaint
30、(); break; case 5: /矩形 x = (int)e.getx(); y = (int)e.gety(); p3 = new point(x, y, c, toolflag, con); paintinfo.addelement(p3); paintinfo.addelement(cutflag); repaint(); break; default: public void mouseentered(mouseevent e) public void mouseexited(mouseevent e) public void mouseclicked(mouseevent e)
31、 /*動(dòng)作事件處理*/public void actionperformed(actionevent e) if(e.getsource()=pen)/畫筆 toolflag = 0; if(e.getsource()=eraser)/橡皮 toolflag = 1; if(e.getsource()=clear)/清除 toolflag = 2; paintinfo.removeallelements(); repaint(); if(e.getsource()=drline)/畫線 toolflag = 3; if(e.getsource()=drcircle)/畫圓 toolflag =
32、 4; if(e.getsource()=drrect)/畫矩形 toolflag = 5; if(e.getsource()=colchooser)/調(diào)色板 color newcolor = jcolorchooser.showdialog(this,調(diào)色板,c); c = newcolor; if(e.getsource()=openpic)/打開圖畫 openpicture.setvisible(true); if(openpicture.getfile()!=null) int tempflag; tempflag = toolflag; toolflag = 2 ; /paintin
33、fo.removeallelements();/移除所有點(diǎn)的信息 /repaint(); /清除畫板內(nèi)容try paintinfo.removeallelements();/移除所有點(diǎn)的信息 repaint(); /清除畫板內(nèi)容file filein = new file(openpicture.getdirectory(),openpicture.getfile(); /打開文件picin = new fileinputstream(filein); vin = new objectinputstream(picin); paintinfo = (vector)vin.readobject(); /依次將文件中的點(diǎn)信息讀入到點(diǎn)向量組中vin.close();
溫馨提示
- 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 元曲進(jìn)校園課題申報(bào)書
- 英語思政課題申報(bào)書范文
- 會計(jì)立項(xiàng)課題申報(bào)書范文
- 廚房煙道設(shè)備合同范本
- 就業(yè)指導(dǎo)課題申報(bào)書
- 公司承運(yùn)合同范本
- 和學(xué)徒簽合同范本
- 校級課題怎樣立項(xiàng)申報(bào)書
- 哪里看課題申報(bào)書
- 挑戰(zhàn)性課題申報(bào)書
- 泌尿男性生殖系統(tǒng)疾病的主要癥狀和檢查(外科護(hù)理課件)
- 2024-2030年中國專業(yè)市場建設(shè)市場發(fā)展前景與投資戰(zhàn)略規(guī)劃研究報(bào)告
- 2024-2030年中國ORC低溫余熱發(fā)電系統(tǒng)行業(yè)商業(yè)模式創(chuàng)新規(guī)劃分析報(bào)告
- 【MOOC】三維設(shè)計(jì)與表達(dá)-北京林業(yè)大學(xué) 中國大學(xué)慕課MOOC答案
- 婦幼健康信息平臺共享數(shù)據(jù)集應(yīng)用規(guī)范第1部分孕產(chǎn)婦保健
- 輸液港的輸液與維護(hù)
- 非洲豬瘟病毒基因IⅡ型重組毒株、基因I型弱毒株和基因Ⅱ型毒株鑒別三重?zé)晒釶CR檢測方法
- 2024解析:第十四章內(nèi)能的利用-講核心(解析版)
- 各類應(yīng)急風(fēng)險(xiǎn)預(yù)案的防范
- 基于義務(wù)教育質(zhì)量監(jiān)測結(jié)果的德育改進(jìn)對策研究
- 開展我為同學(xué)辦實(shí)事活動(dòng)
評論
0/150
提交評論