课程设计-毕业设计-JAVA画板课程设计---总之岁月漫长,然而值得等待。
在校大學(xué)生的一份辛苦勞動(dòng)成果寫(xiě)了一個(gè)小畫(huà)板程序。
?
任務(wù)書(shū)... 1
1.1設(shè)計(jì)內(nèi)容... 1
1.2設(shè)計(jì)任務(wù)及具體要求... 1
1.3軟件開(kāi)發(fā)運(yùn)行環(huán)境.. 1
2? 本組課題... 1
2.1課題... 1
2.2本人任務(wù)... 2
3???? 程序功能簡(jiǎn)介... 2
1.畫(huà)板具體功能.. 2
2.功能分析:... 2
4???? 主體內(nèi)容... 2
4.1設(shè)計(jì)分析... 2
4.2程序架構(gòu)圖... 3
4.2.1系統(tǒng)結(jié)構(gòu)分析圖... 3
4.2.2程序結(jié)構(gòu)流程圖... 4
4.2.3結(jié)構(gòu)流程圖... 5
4.3模塊功能與說(shuō)明... 6
4.4源程序... 10
4.4.1Gui類(lèi)... 10
4.4.2DrawListener類(lèi)... 13
4.4.3接口圖形類(lèi)... 18
4.5操作方法... 24
4.6實(shí)驗(yàn)結(jié)果... 25
4.7設(shè)計(jì)體會(huì)... 26
1? 設(shè)計(jì)任務(wù)書(shū)
1.1設(shè)計(jì)內(nèi)容
學(xué)習(xí)了《Java面向?qū)ο缶幊獭返恼n程,為了更進(jìn)一步的提高我們對(duì)Java的深入學(xué)習(xí),進(jìn)行了課程設(shè)計(jì),我所選擇課程設(shè)計(jì)是利用Java的GUI實(shí)現(xiàn)畫(huà)圖應(yīng)用程度。其目的是通過(guò)本課程設(shè)計(jì)使我們能夠較全面的掌握面向?qū)ο蟪绦蛟O(shè)計(jì)的有關(guān)概念和開(kāi)發(fā)方法,以便能較全面地理解、掌握和綜合運(yùn)用所學(xué)的知識(shí),提高自身的編程能力。
運(yùn)用JAVA語(yǔ)言,實(shí)現(xiàn)界面畫(huà)板,進(jìn)行簡(jiǎn)單圖形繪制。
1.2設(shè)計(jì)任務(wù)及具體要求
主要利用java語(yǔ)言設(shè)計(jì)開(kāi)發(fā)一個(gè)小型的畫(huà)圖應(yīng)用程序,至少具有如下功能:可以進(jìn)行繪畫(huà),有顏色的選擇,可以繪制直線、曲線、橢圓、矩形,操作界面要符合用戶的一般習(xí)慣。
1.3軟件開(kāi)發(fā)運(yùn)行環(huán)境
本軟件開(kāi)發(fā)平臺(tái):JAVA
本軟件開(kāi)發(fā)環(huán)境:IntelliJ IDEA Community Edition 2018.1.4 x64
本軟件運(yùn)行平臺(tái):Windows 10
2? 本組課題
2.1課題
JAVA繪圖板課程設(shè)計(jì)。
2.2本人任務(wù)
1.編寫(xiě)畫(huà)板界面。
2.添加組件監(jiān)聽(tīng)、鼠標(biāo)監(jiān)聽(tīng)功能。
3.編寫(xiě)圖形類(lèi)的接口。
4.編寫(xiě)各種圖形類(lèi)并實(shí)現(xiàn)圖形的重繪。
3?? 程序功能簡(jiǎn)介
1.畫(huà)板具體功能
1)利用Java設(shè)計(jì)一個(gè)畫(huà)圖應(yīng)用程序;
2)可繪制直線、曲線、橢圓、矩形;
3)可改變線條顏色;
2.功能分析:
用戶可以在界面上通過(guò)點(diǎn)擊各個(gè)不同的按鈕,選擇實(shí)現(xiàn)繪制的是哪種圖形和顏色,也可以清除畫(huà)板,程序?qū)⒆詣?dòng)把所繪制的圖形類(lèi)放在一個(gè)集合中,最大化和最小化后遍歷該集合,圖形實(shí)現(xiàn)重繪。
畫(huà)板畫(huà)筆分為兩種,一種是Graphics,一種是Graphics 2D。可以用來(lái)畫(huà)基本圖形還有噴桶、橡皮擦效果。
4? 主體內(nèi)容
4.1設(shè)計(jì)分析
1.繪圖工具已經(jīng)廣為使用,利用JAVA語(yǔ)言編寫(xiě)的畫(huà)板可以滿足基本的圖形要求,為了實(shí)現(xiàn)繪制矩形、圓形、橢圓、多邊形、直線、曲線鉛筆等基本圖形,在此程序中定義上述幾種圖形類(lèi),實(shí)現(xiàn)編寫(xiě)的一個(gè)重繪接口。
2.在用戶界面GUI類(lèi)中,繼承了JFrame類(lèi),添加各種按鈕、兩個(gè)面板,分別用來(lái)畫(huà)圖和存放按鈕組件,界面采用流式布局,為組件添加編寫(xiě)好的事件監(jiān)聽(tīng)機(jī)制。
3.在事件監(jiān)聽(tīng)DrawListener類(lèi)中實(shí)現(xiàn)了MouseListener、MouseMotionListener、ActionListener監(jiān)聽(tīng)接口,并重寫(xiě)其繪圖方法。
4.在事件監(jiān)聽(tīng)類(lèi)中,定義一個(gè)字符串str用來(lái)儲(chǔ)存按鈕按下時(shí)上面的內(nèi)容,如果無(wú)文字,則判斷為顏色按鈕,把畫(huà)筆顏色color設(shè)置為按鈕顏色;有文字的話根據(jù)按鈕文字的不同,去調(diào)用不同的圖形類(lèi)方法,并在繪制圖形后保存在集合中。
5.在界面GUI類(lèi)中調(diào)用DrawListener類(lèi),新建draw引用,為每個(gè)按鈕添加該事件引用并調(diào)用ArrayList集合類(lèi),遍歷所繪制的圖形類(lèi),進(jìn)行重繪。
4.2程序架構(gòu)圖
4.2.1系統(tǒng)結(jié)構(gòu)分析圖
??????????????????????????? 畫(huà)圖區(qū)?????????????????? ?????? ??畫(huà)筆顏色
筆刷
?????????????????????????? 工具欄?????????????? 設(shè)置?????????? 橡皮檫
???????????????????????????????????????????????????????????? 清除面板
??????????????????????????????????????????????????????????????
????????????????????????? 形狀選擇
矩形????? 實(shí)矩形?? 橢圓?????? 實(shí)橢圓?????? 直線??? 曲線 ??? 多邊形
4.2.2程序結(jié)構(gòu)流程圖
??????????????????????? NetJavaShape接口
?????? 圖形類(lèi)??????????? 事件監(jiān)聽(tīng)類(lèi)???????????????? 其它類(lèi)
???????????????????????? 主界面類(lèi)
4.2.3結(jié)構(gòu)流程圖
開(kāi)始
????????????????????????????? Gui類(lèi)
?????????????????????????? 點(diǎn)擊按鈕
??????????????????????? DrawListener類(lèi) ????????????? NetJavaShape接口
????????????????????????????? 判斷
???????????????????????????? 按鈕?????????????? 顏色類(lèi)
???????????????????????? 圖形類(lèi)
?????? 畫(huà)圖??????????????????????? 結(jié)束
4.3模塊功能與說(shuō)明
1.繪圖主界面模塊
1主類(lèi)(GUI)用來(lái)生成主界面。
2完成畫(huà)圖的框架。
3主界面由畫(huà)圖區(qū)、工具欄組成,布局格式采用BorderLayout布局。
4界面截圖
2.繪圖類(lèi)模塊
1在程序中用到了JAVA的封裝、多態(tài)、繼承特性,定義了NetJavaShape接口,里面寫(xiě)了redraw()抽象方法。
2分別構(gòu)造不同的圖形類(lèi):直線類(lèi)(reline)、實(shí)矩形類(lèi)(refilljuxing)、曲線類(lèi)(requxian)、射線類(lèi)(reshexian)、矩形類(lèi)(rejuxing)、折線類(lèi)(rezhexian)、橢圓類(lèi)(retuoyuan)、實(shí)橢圓類(lèi)(refilltuoyuan)。
3每個(gè)圖形類(lèi)都實(shí)現(xiàn)NetJavaShape接口中的redraw()方法,每個(gè)方法中根據(jù)形狀選擇不同的繪制方法函數(shù)。
4每個(gè)類(lèi)可以在事件監(jiān)聽(tīng)類(lèi)中新建不同的對(duì)象引用,根據(jù)按鈕選擇不同可以調(diào)用不同的圖形類(lèi)畫(huà)法。
5部分代碼
import java.awt.*;??????????????? //定義一個(gè)接口,里面用抽象方法讓圖形類(lèi)實(shí)現(xiàn)該接口
public interface NetJavaShape{
??? public abstract void redraw();
}
1 DrawListener實(shí)現(xiàn)ActionListener、MouseListenerMouseMotionListener接口。
? 2定義List<NetJavaShape> getShapeArr()、setG(Graphics g)、setNowColor(JButton nowColor)方法用來(lái)獲取圖形類(lèi)集合、畫(huà)筆、當(dāng)前按鈕顏色。
??3在actionPerformed(ActionEvent e)方法中用來(lái)判斷按鈕按下時(shí)要執(zhí)行哪種命令。mouseDragged(MouseEvent e)方法中用來(lái)執(zhí)行射線、曲線、橡皮檫、筆刷操作。mousePressed(MouseEvent e)、mouseReleased(MouseEvent e)方法中記錄當(dāng)前鼠標(biāo)點(diǎn)擊和釋放的位置坐標(biāo)。mouseReleased(MouseEvent e)中執(zhí)行矩形、橢圓、實(shí)橢圓、折線、直線、實(shí)矩形、噴桶、多邊形、擦除面板操作。
??4 mouseClicked(MouseEvent e)方法中執(zhí)行多邊形連接操作。
??
??????? }
??????? else if ("擦除面板".equals(str)){
??????????? reclear=new clear(g);
????????? reclear.redraw();
????????? shapeArr.add(reclear);
??????? }
??? }
??? @Override
??? public void mouseClicked(MouseEvent e) {
??????? if(str.equals("多邊形")&&flag){??????????????????????????? //鼠標(biāo)點(diǎn)擊時(shí)繪制連接多邊形
??????????? g.setColor(color);
???????????????????????? x2=e.getX();????????????????????????????? //獲取新的點(diǎn)的坐標(biāo)
???????????????????????? y2=e.getY();
??????????????????????? if(e.getClickCount()==2){????????????????? //記錄點(diǎn)擊次數(shù),點(diǎn)擊第二次后開(kāi)始直線連接
??????????????????????????? g.drawLine(startx1,starty1,startx2,starty2);
????????????????????????????? flag=false;
??????????????????????????? }
???????????????????????? g.drawLine(startx2,starty2,x2, y2);
???????????????????????? startx2=x2;?? //存下上個(gè)點(diǎn)的坐標(biāo)
???????????????????????? starty2=y2;
??????????? ????????????}
??? }
??? @Override
??? public void mouseMoved(MouseEvent e) {
??? }
}
??????????????? }
??????????? }
????????????
4.5操作方法
本軟件由IntelliJ IDEA Community Edition 2018.1.4 x64開(kāi)發(fā),運(yùn)行后直接進(jìn)入界面。
1用戶打開(kāi)軟件,點(diǎn)擊工具欄界面上不同的按鈕,可以畫(huà)出不同的圖形。 ???2系統(tǒng)默認(rèn)畫(huà)筆顏色是黑色,用戶也可以點(diǎn)擊顏色按鈕進(jìn)行不同顏色的圖形繪制。 ????????????????????????????????????????????????????????????????????????????3當(dāng)最大化和最小化時(shí),繪制的圖形不會(huì)改變,將自動(dòng)進(jìn)行圖形重繪,也能夠用筆刷和橡皮檫工具,實(shí)現(xiàn)圖形美化。
4.6實(shí)驗(yàn)結(jié)果
基本實(shí)現(xiàn)圖形繪制、顏色選擇、橡皮檫、筆刷、噴桶功能,具體運(yùn)行結(jié)果如下。
4.7設(shè)計(jì)體會(huì)
當(dāng)把程序?qū)懞貌⑦M(jìn)行調(diào)試時(shí),并不是一帆風(fēng)順的,在程序編譯過(guò)程中遇到了許許多多的大大小小的錯(cuò)誤,經(jīng)過(guò)一次又一次的改正錯(cuò)誤最終完成了程序設(shè)計(jì)
1畫(huà)圖應(yīng)用程序的Java源代碼全部正確能夠通過(guò)編譯并正常運(yùn)行。
2畫(huà)圖程序要求功能:畫(huà)直線、曲線、矩形、橢圓、選擇顏色等功能完全實(shí)現(xiàn)。
?3通過(guò)Java編程完全實(shí)現(xiàn)了課程設(shè)計(jì)任務(wù)書(shū)的全部功能。學(xué)好一門(mén)語(yǔ)言,需要不斷反復(fù)的練習(xí),面向?qū)ο蟮脑O(shè)計(jì)模式,充分運(yùn)用類(lèi)與對(duì)象的關(guān)系,JAVA沒(méi)有多繼承,所以在畫(huà)板軟件中定義了一個(gè)接口,讓不同的繪圖類(lèi)實(shí)現(xiàn)該接口,重寫(xiě)不同的方法。圖形類(lèi)中定義了面板、按鈕組件,在事件監(jiān)聽(tīng)類(lèi)中,根據(jù)不同按鈕,調(diào)用生成不同圖形對(duì)象。在這里,為了實(shí)現(xiàn)重新繪制,需要圖形對(duì)象放在集合中,然后在主類(lèi)中遍歷。
通過(guò)這次課程設(shè)計(jì),提高了我對(duì)封裝、繼承、多態(tài)、接口、集合的認(rèn)識(shí),對(duì)事件處理也了解,知識(shí)體系進(jìn)一步擴(kuò)展,掌握的更加牢固緊密。
源碼:310508863
總結(jié)
以上是生活随笔為你收集整理的课程设计-毕业设计-JAVA画板课程设计---总之岁月漫长,然而值得等待。的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 【大数据学习-hadoop1】大数据如何
- 下一篇: 赫夫曼树编码的算法及应用习题--数据结构