《《面向?qū)ο蟪绦蛟O(shè)計(jì)》實(shí)驗(yàn)報(bào)告十一》由會(huì)員分享,可在線閱讀,更多相關(guān)《《面向?qū)ο蟪绦蛟O(shè)計(jì)》實(shí)驗(yàn)報(bào)告十一(14頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、《面向?qū)ο蟪绦蛟O(shè)計(jì)》實(shí)驗(yàn)報(bào)告
實(shí)驗(yàn)十一 繪制圖形
【實(shí)驗(yàn)?zāi)康摹?
掌握使用圖形類Graphics 畫出不同圖形的方法。
【實(shí)驗(yàn)內(nèi)容】(選做一題)
1. 編寫繪制圓形程序DrawOval.java。點(diǎn)擊“確定”按鈕時(shí),在畫布的指定位置畫圓。
2. 編寫移動(dòng)方塊程序MoveSquare.java。
程序由二個(gè)類組成:窗體主類(表現(xiàn)層)負(fù)責(zé)控制,確定所有組件的位置,處理用戶對(duì)方塊的操作。畫布MoveCanvas類(邏輯層)負(fù)責(zé)繪圖,其paint負(fù)責(zé)繪制方塊,其方法moveUp(),moveDown(),moveLeft(),moveRight()分別響應(yīng)窗體主類act
2、ionPerformed ()方法的對(duì)應(yīng)的按鈕事件,再調(diào)用repaint方法來(lái)刷新圖像。
【實(shí)驗(yàn)報(bào)告】
實(shí)習(xí)時(shí)間: 實(shí)習(xí)地點(diǎn): 實(shí)習(xí)機(jī)號(hào):
具
體
實(shí)
驗(yàn)
內(nèi)
容
1. 編寫繪制圓形程序DrawOval.java。點(diǎn)擊“確定”按鈕時(shí),在畫布的指定位置畫圓。
運(yùn)行成功的程序?yàn)椋?
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
3、import java.awt.*;
import javax.swing.*;
public class DrawOval extends JFrame implements ActionListener {
Ovalcanvas canvas;
JTextField in_R,in_X,in_Y;
JButton btn;
public static void main(String[] args) {
// TODO Auto-generated method stub
DrawOval DrawOval=new DrawOval();
}
pub
4、lic 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);
setLayout(new FlowLayout());
add(new JLabel("輸入圓的位置坐標(biāo):"));
add(in_X);
add(in_Y);
add(new JLabel("
5、輸入圓的半徑:"));
add(in_R);
btn=new JButton("確定");
btn.addActionListener(this);
add(btn);
add(canvas);
validate();
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
class Ovalcanvas extends Canvas{
int x,y,r;
void Ovalcanvas(){
setSize(200,200);
setBackground(C
6、olor.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);
}
}
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
int x,y,r;
7、
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;
}
}
}
結(jié)果截圖:
下面為具體實(shí)驗(yàn)過(guò)程:
(1)運(yùn)行,出現(xiàn)錯(cuò)誤,主要是“ca
8、nnot be resolved to a type”的錯(cuò)誤。
WindowEvent cannot be resolved to a type
Graphics cannot be resolved to a type
Constant cannot be resolved to a variable
Constant cannot be resolved to a variable
(2) 換了一個(gè)程序,運(yùn)行,出現(xiàn)錯(cuò)誤:
Multiple markers at this line- Syntax error on token "(", delete this token-
9、 Syntax error on token ")", delete this token
Multiple markers at this line
- Syntax error on token(s), misplaced construct(s)
- Syntax error on token "void", @ expected
- Syntax error, insert "interface Identifier" to complete
InterfaceHeader
(3)主窗體界面應(yīng)該調(diào)研setOval(int[]x,int[]y,intN)變
10、成畫布類邏輯層。
(4)按照云課堂PPT的程序,輸入,發(fā)現(xiàn)有如下錯(cuò)誤:
①Ovalcanvas cannot be resolved to a type
②Syntax error on token "Invalid Character", ; expected
③JLable cannot be resolved to a type
④Syntax error on token "Invalid Character", ; expected
⑤Multiple markers at this line
- Ovalcanvas cannot be resolved t
11、o
a type
- Ovalcanvas cannot be resolved to
a type
⑥Exception in thread "main" java.lang.Error: Unresolved compilation problem:
at DrawOval.main(DrawOval.java:9)
(5)第35行class OvalCanvas extends Canvas應(yīng)該改為“class Ovalcanvas extends Canvas”,沒(méi)有注意大小寫。
(6)第14行“super("畫布上繪制圓");”這里的“;”有問(wèn)
12、題,忘了使用英文符號(hào)。
(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)過(guò)觀察,發(fā)現(xiàn)我之所以會(huì)出現(xiàn)“JLable
13、 cannot be resolved to a type”的錯(cuò)誤,是因?yàn)槲野选癑Label”寫出了”JLable”.
(9) 經(jīng)改善以上一系列程序錯(cuò)誤以后,我運(yùn)行程序,程序能運(yùn)行成功,但是當(dāng)我輸入圓的半徑及位置坐標(biāo)之后,點(diǎn)擊“確定”卻無(wú)法畫出一個(gè)與之相對(duì)應(yīng)的圓。明明程序是和老師PPT里的程序是一樣的,但就是畫不出圓來(lái)。
(10) 在以上問(wèn)題的基礎(chǔ)上,首先,我將第8行的代碼“JLabel jl1,jl2;”刪除。
(11)其次,我將第22及23行的代碼jl1=new JLabel("輸入圓的位置坐標(biāo):");
this.add(jl1);改為:add(new JLabel
14、("輸入圓的位置坐標(biāo):"));
(12)最后,我將第25及26的代碼jl2=new JLabel("輸入圓的半徑:");this.add(jl2);改為:add(new JLabel("輸入圓的半徑:"));
(13) 最后的最后,經(jīng)過(guò)一系列對(duì)該程序的摸索及改正,運(yùn)行成功,結(jié)果截圖為:
實(shí)
習(xí)
小
結(jié)
1.實(shí)驗(yàn)一主要是卡在“cannot be resolved to a type”這里,比如說(shuō):
Ellipse2D cannot be
15、 resolved to a type(橢圓不能被解析為類型)等“cannot be resolved to a type”的類似錯(cuò)誤。
這部分錯(cuò)誤主要是因?yàn)闆](méi)有注意英文字母的大小寫以及中英式字符的使用而導(dǎo)致的,比如說(shuō)將“JLabel”寫成了”JLable”則會(huì)出現(xiàn)“JLable cannot be resolved to a type”的錯(cuò)誤。在以后的實(shí)驗(yàn)中還是要多注意字母的大小寫這類小問(wèn)題,因?yàn)榇a總是英文和中文互用,很容易搞混。
2.實(shí)驗(yàn)一還卡在以下錯(cuò)誤:
①OvalCanvas cannot be resolved to a type(主要是因?yàn)椤癘valcanvas”寫成了“O
16、valCanvas”,字母大小寫的問(wèn)題。
②Syntax error on token "Invalid Character", ; expected。(符號(hào)“;”沒(méi)有用英文字符“;”的緣故)。
3.對(duì)于實(shí)驗(yàn)一,主要是要掌握“主窗體界面應(yīng)該調(diào)研setOval(int[]x,int[]y,intN)變成畫布類邏輯層”的知識(shí)點(diǎn)。難寫的程序是以下部分:
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.其實(shí)這個(gè)實(shí)驗(yàn)我是在參考老師云課堂PPT才寫出來(lái)的。在做該實(shí)驗(yàn)的過(guò)程中,犯了很多不應(yīng)該犯的低級(jí)錯(cuò)誤,特別是英文字母的大小寫及中英式字符的運(yùn)用這些低級(jí)錯(cuò)誤,在以后的實(shí)驗(yàn)中,我要更加注意這方面的問(wèn)題。