




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
1、精選文檔 JAVA期末畫板實驗報告課程題目:運用JAVA語言編寫一個畫板程序,這個畫板要有畫圖,特殊圖形繪制,顏色改變,畫筆大小改變等功能。設計思想:1. 進行界面設計2. 進行算法實現(xiàn)3. 運行調(diào)試4. 總結(jié)問題設計過程: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. 畫筆的大?。篶hoice1.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()返回被選中選項的標簽文本字符串,即確定畫筆的大?。╟on)。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指無裝飾地結(jié)束未封閉的子路徑
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)結(jié)果展示: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)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 營養(yǎng)干預對亞健康人群免疫力提升的作用
- 英語飯桌情景對話閱讀帶翻譯
- 產(chǎn)業(yè)鏈整合型廠房出售與運營管理合同
- 商業(yè)綜合體商業(yè)場地轉(zhuǎn)租租賃合同
- 辦公室花卉租賃與生態(tài)節(jié)能服務合同
- 采沙資源開發(fā)利用與生態(tài)補償協(xié)議
- 水鋼脫硫檢修方案
- 高端社區(qū)保潔方案
- 工地門禁定制方案
- 鎮(zhèn)江編制考試題及答案
- 雨季三防測試題及答案
- 科創(chuàng)板考試題及答案
- 感染性休克集束化治療
- 科學實驗室的環(huán)保節(jié)能設計與實施
- 生活垃圾分揀技術(shù)的研究現(xiàn)狀及發(fā)展趨勢分析
- 農(nóng)業(yè)合作社農(nóng)機具租賃合同模板
- 2025-2030年中國電鍍工業(yè)前景規(guī)劃及投資決策建議研究報告
- 小學生消防暑期安全
- 《海運出口操作》課件
- 《四川省信息化項目費用測算標準》
- 遼寧省沈陽市皇姑區(qū)岐山小學-2024-2025年第一學期班主任工作總結(jié)(勤于細微)【課件】
評論
0/150
提交評論