




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、精選文檔 JAVA期末畫板實驗報告課程題目:運用JAVA語言編寫一個畫板程序,這個畫板要有畫圖,特殊圖形繪制,顏色改變,畫筆大小改變等功能。設(shè)計思想:1. 進行界面設(shè)計2. 進行算法實現(xiàn)3. 運行調(diào)試4. 總結(jié)問題設(shè)計過程:A. 界面設(shè)計新建一個Jframe容器,然后定義一個panel( Panel convas2),convas2是工具欄。用borderlayout布置容器的邊框布局,將工具欄放在NORTH部分。完成界面設(shè)計。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)聽進行響應(yīng)。運行相應(yīng)程序進行畫圖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)聽響應(yīng)監(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)聽進行響應(yīng),例如當監(jiān)聽到btn1時賦值a=1(a為char型),即當前工具為直線。但是當監(jiān)聽到btn4時不進行對a賦值而是直接進行清除操作,由于清除操作是對畫布進行清除,不參與鼠標事件,因此可以直接執(zhí)行。3. 鼠標監(jiān)聽響應(yīng)a. 鼠標按鈕按下事件,獲取畫圖起始坐標x0,y0.public void mousePressed(MouseEvent e)x0=e.getX();y0=e.getY();b. 鼠標移動
7、事件public void mouseMoved(MouseEvent e) c. 鼠標按鈕松開事件,此次響應(yīng)完成對直線,橢圓,矩形進行繪制。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.鼠標拖動事件:此次響應(yīng)實現(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. 下拉列表響應(yīng)a. 顏色下拉列表響應(yīng):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. 畫筆大小下拉列表響應(yīng):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 屬性設(shè)置為此 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)試運行后得到了畫板和預(yù)期的所有功能,實現(xiàn)結(jié)果展示:D. 遇到問題1.繪制完成后,將窗口最大化或者最小化后再打開,原本繪制的圖形消失。尚未解決。2.確定畫筆大小時不得要領(lǐng),后來通過查找資料解決。附表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)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 物理測試題大全及答案
- 教育教學改進與反思結(jié)合的試題及答案
- 能量轉(zhuǎn)化理論試題及答案2025
- 英語試題30題及答案
- 零售電商行業(yè)無人貨架技術(shù)發(fā)展趨勢報告
- 新能源汽車行業(yè)的國際合作試題及答案在2025年
- 新能源汽車的基礎(chǔ)設(shè)施建設(shè)研究試題及答案
- 教師教育教學反思與改進策略的實施路徑討論試題及答案
- 未來家具設(shè)計文化與科技的碰撞試題及答案
- 安健環(huán)知識試題及答案
- 輕型載貨汽車制動器設(shè)計
- 高考語文120個重點文言實詞
- 江蘇省糧食集團招聘筆試題庫2024
- 2023年全國職業(yè)院校技能大賽-老年護理與保健賽項規(guī)程
- 2024年深圳市彩田學校初中部小升初入學分班考試數(shù)學模擬試卷附答案解析
- 2024年安徽安慶市交通控股集團有限公司招聘筆試沖刺題(帶答案解析)
- 《沙龍培訓(xùn)》課件
- 充電樁四方協(xié)議書范本
- 中考英語情景交際和看圖寫話
- 知道智慧網(wǎng)課《科學社會主義概論》章節(jié)測試答案
- 事故調(diào)查分析課件
評論
0/150
提交評論