《面向对象程序设计》实验报告十一.docx
《《面向对象程序设计》实验报告十一.docx》由会员分享,可在线阅读,更多相关《《面向对象程序设计》实验报告十一.docx(17页珍藏版)》请在冰豆网上搜索。
《面向对象程序设计》实验报告十一
《面向对象程序设计》实验报告
实验十一绘制图形
【实验目得】
掌握使用图形类Graphics画出不同图形得方法。
【实验内容】(选做一题)
1、编写绘制圆形程序DrawOval、java。
点击“确定”按钮时,在画布得指定位置画圆。
2、编写移动方块程序MoveSquare、java。
程序由二个类组成:
窗体主类(表现层)负责控制,确定所有组件得位置,处理用户对方块得操作。
画布MoveCanvas类(逻辑层)负责绘图,其paint负责绘制方块,其方法moveUp,moveDown,moveLeft,moveRight分别响应窗体主类actionPerformed方法得对应得按钮事件,再调用repaint方法来刷新图像。
【实验报告】
实习时间:
实习地点:
实习机号:
具
体
实
验
内
容
1、编写绘制圆形程序DrawOval、java。
点击“确定”按钮时,在画布得指定位置画圆。
运行成功得程序为:
importjava、awt、event、ActionEvent;
importjava、awt、event、ActionListener;
importjava、awt、*;
importjavax、swing、*;
publicclassDrawOvalextendsJFrameimplementsActionListener{
Ovalcanvascanvas;
JTextFieldin_R,in_X,in_Y;
JButtonbtn;
publicstaticvoidmain(String[]args){
//TODOAutogeneratedmethodstub
DrawOvalDrawOval=newDrawOval;
}
publicDrawOval{
super("画布上绘制圆");
setSize(600,300);
setVisible(true);
canvas=newOvalcanvas;
in_R=newJTextField(6);
in_X=newJTextField(6);
in_Y=newJTextField(6);
setLayout(newFlowLayout);
add(newJLabel("输入圆得位置坐标:
"));
add(in_X);
add(in_Y);
add(newJLabel("输入圆得半径:
"));
add(in_R);
btn=newJButton("确定");
btn、addActionListener(this);
add(btn);
add(canvas);
validate;
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
classOvalcanvasextendsCanvas{
intx,y,r;
voidOvalcanvas{
setSize(200,200);
setBackground(Color、cyan);
}
publicvoidsetOval(intx,inty,intr){
this、x=x;
this、y=y;
this、r=r;
}
publicvoidpaint(Graphicsg){
g、drawOval(x,y,2*r,2*r);
}
}
Override
publicvoidactionPerformed(ActionEvente){
//TODOAutogeneratedmethodstub
intx,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(NumberFormatExceptionee){
x=0;y=0;r=0;
}
}
}
结果截图:
下面为具体实验过程:
(1)运行,出现错误,主要就是“cannotberesolvedtoatype”得错误。
WindowEventcannotberesolvedtoatype
Graphicscannotberesolvedtoatype
Constantcannotberesolvedtoavariable
Constantcannotberesolvedtoavariable
(2)换了一个程序,运行,出现错误:
MultiplemarkersatthislineSyntaxerrorontoken"(",deletethistokenSyntaxerrorontoken")",deletethistoken
Multiplemarkersatthisline
Syntaxerrorontoken(s),misplacedconstruct(s)
Syntaxerrorontoken"void",expected
Syntaxerror,insert"interfaceIdentifier"toplete
InterfaceHeader
(3)主窗体界面应该调研setOval(int[]x,int[]y,intN)变成画布类逻辑层。
(4)按照云课堂PPT得程序,输入,发现有如下错误:
①Ovalcanvascannotberesolvedtoatype
②Syntaxerrorontoken"InvalidCharacter",;expected
③JLablecannotberesolvedtoatype
④Syntaxerrorontoken"InvalidCharacter",;expected
⑤Multiplemarkersatthisline
Ovalcanvascannotberesolvedto
atype
Ovalcanvascannotberesolvedto
atype
⑥Exceptioninthread"main"java、lang、Error:
Unresolvedpilationproblem:
atDrawOval、main(DrawOval、java:
9)
(5)第35行classOvalCanvasextendsCanvas应该改为“classOvalcanvasextendsCanvas”,没有注意大小写。
(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)经过观察,发现我之所以会出现“JLablecannotberesolvedtoatype”得错误,就是因为我把“JLabel”写出了”JLable”、
(9)经改善以上一系列程序错误以后,我运行程序,程序能运行成功,但就是当我输入圆得半径及位置坐标之后,点击“确定”却无法画出一个与之相对应得圆。
明明程序就是与老师PPT里得程序就是一样得,但就就是画不出圆来。
(10)在以上问题得基础上,首先,我将第8行得代码“JLabeljl1,jl2;”删除。
(11)其次,我将第22及23行得代码jl1=newJLabel("输入圆得位置坐标:
");
this、add(jl1);改为:
add(newJLabel("输入圆得位置坐标:
"));
(12)最后,我将第25及26得代码jl2=newJLabel("输入圆得半径:
");this、add(jl2);改为:
add(newJLabel("输入圆得半径:
"));
(13)最后得最后,经过一系列对该程序得摸索及改正,运行成功,结果截图为:
实
习
小
结
1、实验一主要就是卡在“cannotberesolvedtoatype”这里,比如说:
Ellipse2Dcannotberesolvedtoatype(椭圆不能被解析为类型)等“cannotberesolvedtoatype”得类似错误。
这部分错误主要就是因为没有注意英文字母得大小写以及中英式字符得使用而导致得,比如说将“JLabel”写成了”JLable”则会出现“JLablecannotberesolvedtoatype”得错误。
在以后得实验中还就是要多注意字母得大小写这类小问题,因为代码总就是英文与中文互用,很容易搞混。
2、实验一还卡在以下错误:
①OvalCanvascannotberesolvedtoatype(主要就是因为“Ovalcanvas”写成了“OvalCanvas”,字母大小写得问题。
②Syntaxerrorontoken"InvalidCharacter",;expected。
(符号“;”没有用英文字符“;”得缘故)。
3、对于实验一,主要就是要掌握“主窗体界面应该调研setOval(int[]x,int[]y,intN)变成画布类逻辑层”得知识点。
难写得程序就是以下部分:
intx,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(NumberFormatExceptionee){
x=0;y=0;r=0;
}
4、其实这个实验我就是在参考老师云课堂PPT才写出来得。
在做该实验得过程中,犯了很多不应该犯得低级错误,特别就是英文字母得大小写及中英式字符得运用这些低级错误,在以后得实验中,我要更加注意这方面得问题。