《《面向?qū)ο蟪绦蛟O(shè)計》實驗報告十一》由會員分享,可在線閱讀,更多相關(guān)《《面向?qū)ο蟪绦蛟O(shè)計》實驗報告十一(14頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、面向?qū)ο蟪绦蛟O(shè)計實驗報告實驗十一 繪制圖形【實驗?zāi)康摹空莆帐褂脠D形類Graphics 畫出不同圖形的方法?!緦嶒瀮?nèi)容】(選做一題)1. 編寫繪制圓形程序DrawOval.java。點擊“確定”按鈕時,在畫布的指定位置畫圓。2. 編寫移動方塊程序MoveSquare.java。程序由二個類組成:窗體主類(表現(xiàn)層)負(fù)責(zé)控制,確定所有組件的位置,處理用戶對方塊的操作。畫布MoveCanvas類(邏輯層)負(fù)責(zé)繪圖,其paint負(fù)責(zé)繪制方塊,其方法moveUp(),moveDown(),moveLeft(),moveRight()分別響應(yīng)窗體主類actionPerformed ()方法的對應(yīng)的按鈕事件,
2、再調(diào)用repaint方法來刷新圖像?!緦嶒瀳蟾妗繉嵙?xí)時間: 實習(xí)地點: 實習(xí)機(jī)號:具體實驗內(nèi)容1. 編寫繪制圓形程序DrawOval.java。點擊“確定”按鈕時,在畫布的指定位置畫圓。運(yùn)行成功的程序為:import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.*;import javax.swing.*;public class DrawOval extends JFrame implements ActionListener Ovalcanvas canvas;JTextFi
3、eld in_R,in_X,in_Y;JButton btn;public static void main(String args) / TODO Auto-generated method stubDrawOval DrawOval=new DrawOval();public DrawOval() super(畫布上繪制圓);setSize(600,300);setVisible(true);canvas=new Ovalcanvas();in_R=new JTextField(6);in_X=new JTextField(6);in_Y=new JTextField(6);setLayo
4、ut(new FlowLayout();add(new JLabel(輸入圓的位置坐標(biāo):);add(in_X);add(in_Y);add(new JLabel(輸入圓的半徑:);add(in_R);btn=new JButton(確定); btn.addActionListener(this);add(btn);add(canvas);validate();setDefaultCloseOperation(EXIT_ON_CLOSE);class Ovalcanvas extends Canvasint x,y,r; void Ovalcanvas() setSize(200,200); s
5、etBackground(Color.cyan); public void setOval(int x,int y,int r) this.x=x;this.y=y;this.r=r;public void paint(Graphics g) g.drawOval(x, y, 2*r, 2*r);Overridepublic void actionPerformed(ActionEvent e) / TODO Auto-generated method stubint x,y,r;try x=Integer.parseInt(in_X.getText(); y=Integer.parseInt
6、(in_Y.getText(); r=Integer.parseInt(in_R.getText();canvas.setOval(x,y,r);canvas.repaint();catch(NumberFormatException ee) x=0;y=0;r=0;結(jié)果截圖:下面為具體實驗過程:(1)運(yùn)行,出現(xiàn)錯誤,主要是“cannot be resolved to a type”的錯誤。WindowEvent cannot be resolved to a typeGraphics cannot be resolved to a typeConstant cannot be resolve
7、d to a variableConstant cannot be resolved to a variable(2) 換了一個程序,運(yùn)行,出現(xiàn)錯誤:Multiple markers at this line- Syntax error on token (, delete this token- Syntax error on token ), delete this tokenMultiple markers at this line- Syntax error on token(s), misplaced construct(s)- Syntax error on token void,
8、 expected- Syntax error, insert interface Identifier to complete InterfaceHeader(3)主窗體界面應(yīng)該調(diào)研setOval(intx,inty,intN)變成畫布類邏輯層。(4)按照云課堂PPT的程序,輸入,發(fā)現(xiàn)有如下錯誤:Ovalcanvas cannot be resolved to a typeSyntax error on token Invalid Character, ; expectedJLable cannot be resolved to a typeSyntax error on token Inv
9、alid Character, ; expectedMultiple markers at this line- Ovalcanvas cannot be resolved to a type- Ovalcanvas cannot be resolved to a typeException in thread main java.lang.Error: Unresolved compilation problem: at DrawOval.main(DrawOval.java:9)(5)第35行class OvalCanvas extends Canvas應(yīng)該改為“class Ovalcan
10、vas extends Canvas”,沒有注意大小寫。(6)第14行“super(畫布上繪制圓);”這里的“;”有問題,忘了使用英文符號。(7)將以下程序: x=Integer.parseInt(jl1.getText(); y=Integer.parseInt(jl2.getText(); r=Integer.parseInt(jl3.getText();改為:x=Integer.parseInt(in_X.getText(); y=Integer.parseInt(in_Y.getText(); r=Integer.parseInt(in_R.getText();(8)經(jīng)過觀察,發(fā)現(xiàn)我之
11、所以會出現(xiàn)“JLable cannot be resolved to a type”的錯誤,是因為我把“JLabel”寫出了”JLable”.(9) 經(jīng)改善以上一系列程序錯誤以后,我運(yùn)行程序,程序能運(yùn)行成功,但是當(dāng)我輸入圓的半徑及位置坐標(biāo)之后,點擊“確定”卻無法畫出一個與之相對應(yīng)的圓。明明程序是和老師PPT里的程序是一樣的,但就是畫不出圓來。(10) 在以上問題的基礎(chǔ)上,首先,我將第8行的代碼“JLabel jl1,jl2;”刪除。(11)其次,我將第22及23行的代碼jl1=new JLabel(輸入圓的位置坐標(biāo):);this.add(jl1);改為:add(new JLabel(輸入圓的位
12、置坐標(biāo):);(12)最后,我將第25及26的代碼jl2=new JLabel(輸入圓的半徑:);this.add(jl2);改為:add(new JLabel(輸入圓的半徑:);(13) 最后的最后,經(jīng)過一系列對該程序的摸索及改正,運(yùn)行成功,結(jié)果截圖為:實習(xí)小結(jié)1.實驗一主要是卡在“cannot be resolved to a type”這里,比如說:Ellipse2D cannot be resolved to a type(橢圓不能被解析為類型)等“cannot be resolved to a type”的類似錯誤。這部分錯誤主要是因為沒有注意英文字母的大小寫以及中英式字符的使用而導(dǎo)致
13、的,比如說將“JLabel”寫成了”JLable”則會出現(xiàn)“JLable cannot be resolved to a type”的錯誤。在以后的實驗中還是要多注意字母的大小寫這類小問題,因為代碼總是英文和中文互用,很容易搞混。2.實驗一還卡在以下錯誤:OvalCanvas cannot be resolved to a type(主要是因為“Ovalcanvas”寫成了“OvalCanvas”,字母大小寫的問題。Syntax error on token Invalid Character, ; expected。(符號“;”沒有用英文字符“;”的緣故)。3.對于實驗一,主要是要掌握“主窗
14、體界面應(yīng)該調(diào)研setOval(intx,inty,intN)變成畫布類邏輯層”的知識點。難寫的程序是以下部分:int x,y,r;try x=Integer.parseInt(in_X.getText(); y=Integer.parseInt(in_Y.getText(); r=Integer.parseInt(in_R.getText();canvas.setOval(x,y,r);canvas.repaint();catch(NumberFormatException ee) x=0;y=0;r=0;4.其實這個實驗我是在參考老師云課堂PPT才寫出來的。在做該實驗的過程中,犯了很多不應(yīng)該犯的低級錯誤,特別是英文字母的大小寫及中英式字符的運(yùn)用這些低級錯誤,在以后的實驗中,我要更加注意這方面的問題。