




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、精選文檔 JAVA期末畫板實驗報告課程題目:運用JAVA語言編寫一個畫板程序,這個畫板要有畫圖,特殊圖形繪制,顏色改變,畫筆大小改變等功能。設計思想:1. 進行界面設計2. 進行算法實現(xiàn)3. 運行調(diào)試4. 總結問題設計過程:A. 界面設計新建一個Jframe容器,然后定義一個panel( Panel convas2),convas2是工具欄。用borderlayout布置容器的邊框布局,將工具欄放在NORTH部分。完成界面設計。add(canvas2,BorderLayout.NORTH);Panel canvas2 = new Panel();添加工具按鍵Panel canvas2 = ne
2、w Panel();Button btn1 = new Button(直線);Button btn2 = new Button(橢圓);Button btn3 = new Button(矩形);Button btn4 = new Button(清除);Button btn5 = new Button(畫筆);Button btn6 = new Button(橡皮);Choice choice = new Choice(); Choice choice1 = new Choice();canvas2.add(choice);canvas2.add(choice1);canvas2.add(btn
3、1);canvas2.add(btn2);canvas2.add(btn3);canvas2.add(btn4);canvas2.add(btn5);canvas2.add(btn6);在工具表中,有兩個下拉菜單,分別收錄畫筆的大小和顏色。1. 畫筆的大小:choice1.add(1);choice1.add(3);choice1.add(5);choice1.add(7);choice1.add(9);2. 畫筆顏色choice.add(黑色);choice.add(藍色);choice.add(紅色);choice.add(黃色); choice.add(綠色);3展示畫板B. 算法實現(xiàn)運
4、用畫板,首先要對工具欄按鍵和鼠標進行監(jiān)聽,然后對監(jiān)聽進行響應。運行相應程序進行畫圖1. 監(jiān)聽程序展示:choice.addItemListener(this);choice1.addItemListener(this);btn1.addActionListener(this);btn2.addActionListener(this);btn3.addActionListener(this);btn4.addActionListener(this);btn5.addActionListener(this);btn6.addActionListener(this);addMouseListener
5、(this);addMouseMotionListener(this);2. 按鍵監(jiān)聽響應監(jiān)聽到按鍵后,判斷當前會話工具public void actionPerformed(ActionEvent e) if(e.getSource().equals(btn1)a=1;if(e.getSource().equals(btn2)a=2;if(e.getSource().equals(btn3)a=3;if(e.getSource().equals(btn4) Graphics g = this.getGraphics();g.clearRect(0, 0, this.getWidth(), t
6、his.getHeight();if(e.getSource().equals(btn5)a=4;if(e.getSource().equals(btn6)a=5;定義一個變量a,對按鍵監(jiān)聽進行響應,例如當監(jiān)聽到btn1時賦值a=1(a為char型),即當前工具為直線。但是當監(jiān)聽到btn4時不進行對a賦值而是直接進行清除操作,由于清除操作是對畫布進行清除,不參與鼠標事件,因此可以直接執(zhí)行。3. 鼠標監(jiān)聽響應a. 鼠標按鈕按下事件,獲取畫圖起始坐標x0,y0.public void mousePressed(MouseEvent e)x0=e.getX();y0=e.getY();b. 鼠標移動
7、事件public void mouseMoved(MouseEvent e) c. 鼠標按鈕松開事件,此次響應完成對直線,橢圓,矩形進行繪制。public void mouseReleased(MouseEvent e)Graphics2D g = (Graphics2D)this.getGraphics();size=new BasicStroke(con,BasicStroke.CAP_BUTT,BasicStroke.JOIN_BEVEL);g.setColor(b);g.setStroke(size);switch(a)case 1:g.drawLine(x0, y0, e.getX(
8、), e.getY();break;case 2:g.drawOval(x0, y0, e.getX() - x0, e.getY() - y0);break;case 3:g.drawRect(x0, y0, e.getX() - x0, e.getY() - y0);break;d. 鼠標進入事件:public void mouseEntered(MouseEvent e)e. 鼠標離開事件:public void mouseExited(MouseEvent e) f.鼠標單擊事件:public void mouseClicked(MouseEvent e)g.鼠標拖動事件:此次響應實現(xiàn)
9、畫筆(隨筆畫),橡皮的繪制。public void mouseDragged(MouseEvent e) Graphics2D g = (Graphics2D)this.getGraphics();size=new BasicStroke(con,BasicStroke.CAP_BUTT,BasicStroke.JOIN_BEVEL);g.setColor(b);g.setStroke(size);switch(a)case 4:g.drawLine(x0, y0, e.getX(), e.getY();x0 = e.getX();y0 = e.getY();break;case 5:g.cl
10、earRect(x0 - 10, y0 - 10, 20, 20);x0 = e.getX();y0 = e.getY();break;4. 下拉列表響應a. 顏色下拉列表響應:if(e.getSource()=choice)if(choice.getSelectedIndex()=0)b=Color.black;if(choice.getSelectedIndex()=1)b=Color.BLUE;if(choice.getSelectedIndex()=2)b=Color.red;if(choice.getSelectedIndex()=3)b=Color.yellow;if(choice
11、.getSelectedIndex()=4)b=Color.green;調(diào)用choice.getSelectedIndex()返回被選中的選項的序號(下拉列表中第一個選項序號為0,依次遞加。)即進行選擇顏色的操作b. 畫筆大小下拉列表響應:if(e.getSource()=choice1)if(choice1.getSelectedItem()=1)con=1;else if(choice1.getSelectedItem()=3)con=3;else if(choice1.getSelectedItem()=5)con=5;else if(choice1.getSelectedItem()=
12、7)con=7;else if(choice1.getSelectedItem()=9)con=9;調(diào)用choice1.getSelectedItem()返回被選中選項的標簽文本字符串,即確定畫筆的大小(con)。5. 工具欄工具實現(xiàn)程序詳解(1)Graphics2D g = (Graphics2D)this.getGraphics(); size=newBasicStroke(con,BasicStroke.CAP_BUTT,BasicStroke.JOIN_BEVEL);g.setColor(b);g.setStroke(size);繪制圖形用到類Graphics2D,其中包括很多繪制圖形
13、的方法,定義一個Graphics2D類g,用getGraphics()來得到一個Graphics2D對象,它相當于組建的繪圖環(huán)境,可以進行各種繪圖操作。size=new BasicStroke(con,BasicStroke.CAP_BUTT,BasicStroke.JOIN_BEVEL);定義一個BasicStroke類 size來確定畫筆的大小,其中BasicStroke類定義針對圖形圖元輪廓呈現(xiàn)屬性的一個基本集合,這些圖元使用 Graphics2D 對象呈現(xiàn),而該對象的 Stroke 屬性設置為此 BasicStroke。其中con為畫筆寬度,CAP_BUTT指無裝飾地結束未封閉的子路徑
14、和虛線線段,JOIN_BEVEL通過直線連接寬體輪廓的外角,將路徑線段連接在一起。(以上內(nèi)容為網(wǎng)上查找資料所得。) (2) 實現(xiàn)直線,橢圓,矩形繪制: switch(a)case 1:g.drawLine(x0, y0, e.getX(), e.getY();break;case 2:g.drawOval(x0, y0, e.getX() - x0, e.getY() - y0);break;case 3:g.drawRect(x0, y0, e.getX() - x0, e.getY() - y0);break;(3)隨筆畫和橡皮switch(a)case 4:g.drawLine(x0,
15、y0, e.getX(), e.getY();x0 = e.getX();y0 = e.getY();break;case 5:g.clearRect(x0 - 10, y0 - 10, 20, 20);x0 = e.getX();y0 = e.getY();break;6. 主類程序得以運行的入口,進入主類后即運行l(wèi)itao()類。C. 調(diào)試運行調(diào)試運行后得到了畫板和預期的所有功能,實現(xiàn)結果展示:D. 遇到問題1.繪制完成后,將窗口最大化或者最小化后再打開,原本繪制的圖形消失。尚未解決。2.確定畫筆大小時不得要領,后來通過查找資料解決。附表1:源程序:import java.awt.*;im
16、port java.awt.event.*;import javax.swing.JFrame;public class litao extends JFrame implements MouseMotionListener,MouseListener,ActionListener, ItemListener Panel canvas2 = new Panel();Button btn1 = new Button(直線);Button btn2 = new Button(橢圓);Button btn3 = new Button(矩形);Button btn4 = new Button(清除);
17、Button btn5 = new Button(畫筆);Button btn6 = new Button(橡皮);Choice choice = new Choice(); Choice choice1 = new Choice();Color b;int x0,y0;char a=4;int con=1;BasicStroke size;private static Color colors = Color.black, Color.blue, Color.red,Color.yellow, Color.green ;public litao()choice1.add(1);choice1
18、.add(3);choice1.add(5);choice1.add(7);choice1.add(9);choice.add(黑色);choice.add(藍色);choice.add(紅色);choice.add(黃色); choice.add(綠色);canvas2.add(choice);canvas2.add(choice1);canvas2.add(btn1);canvas2.add(btn2);canvas2.add(btn3);canvas2.add(btn4);canvas2.add(btn5);canvas2.add(btn6);choice.addItemListener
19、(this);choice1.addItemListener(this);btn1.addActionListener(this);btn2.addActionListener(this);btn3.addActionListener(this);btn4.addActionListener(this);btn5.addActionListener(this);btn6.addActionListener(this);addMouseListener(this);addMouseMotionListener(this);add(canvas2,BorderLayout.NORTH);setBa
20、ckground(Color.white);canvas2.setBackground(Color.blue);this.setBackground(Color.white);setSize(800, 600);setVisible(true);public void paint(Graphics g)public void actionPerformed(ActionEvent e) if(e.getSource().equals(btn1)a=1;if(e.getSource().equals(btn2)a=2;if(e.getSource().equals(btn3)a=3;if(e.g
21、etSource().equals(btn4) Graphics g = this.getGraphics();g.clearRect(0, 0, this.getWidth(), this.getHeight();if(e.getSource().equals(btn5)a=4;if(e.getSource().equals(btn6)a=5;public void mousePressed(MouseEvent e)x0=e.getX();y0=e.getY();public void mouseMoved(MouseEvent e) public void mouseReleased(M
22、ouseEvent e)Graphics2D g = (Graphics2D)this.getGraphics();size=new BasicStroke(con,BasicStroke.CAP_BUTT,BasicStroke.JOIN_BEVEL);g.setColor(b);g.setStroke(size);switch(a)case 1:g.drawLine(x0, y0, e.getX(), e.getY();break;case 2:g.drawOval(x0, y0, e.getX() - x0, e.getY() - y0);break;case 3:g.drawRect(
23、x0, y0, e.getX() - x0, e.getY() - y0);break;public void mouseEntered(MouseEvent e)public void mouseExited(MouseEvent e)public void mouseClicked(MouseEvent e)public void mouseDragged(MouseEvent e) Graphics2D g = (Graphics2D)this.getGraphics();size=new BasicStroke(con,BasicStroke.CAP_BUTT,BasicStroke.JOIN_BEVEL);g
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 汽車懸掛系統(tǒng)設計與性能評估考核試卷
- 玉米淀粉在制藥工業(yè)中的藥物載體與控釋系統(tǒng)考核試卷
- 一年級語文拼音過關練習題三篇
- 印刷項目管理與執(zhí)行考核試卷
- 竹材采運市場趨勢預測與決策支持考核試卷
- 介紹春節(jié)初二語文作文
- 珠寶首飾企業(yè)戰(zhàn)略規(guī)劃考核試卷
- 生物多樣性展示教具考核試卷
- 糧油節(jié)能減排技術考核試卷
- 洗浴養(yǎng)生食療搭配考核試卷
- UL1059標準中文版-2020接線端子UL標準中文版
- 中國慢性阻塞性肺疾病基層診療指南(2024年)解讀
- 消化道疾病護理
- 2024-2025學年高中政治 第三單元 全面依法治國 第八課 法治中國建設 1 法治國家教案 部編版必修3
- 解讀功能性食品研發(fā)
- 2024年衛(wèi)生專業(yè)技術資格考試衛(wèi)生檢驗技術(初級(師)211)相關專業(yè)知識試題及答案指導
- 急性胰腺炎護理查房-5
- 公務用車分時租賃實施方案
- 湖北公務員面試模擬87
- 學校職稱評審工作自查報告
- 人教版九年級化學下冊第十一單元課題1化學與人體健康課件
評論
0/150
提交評論