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