《面向对象程序设计》实验报告十一.docx
- 文档编号:3938907
- 上传时间:2022-11-26
- 格式:DOCX
- 页数:17
- 大小:929.44KB
《面向对象程序设计》实验报告十一.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){
//TODOAuto-generatedmethodstub
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){
//TODOAuto-generatedmethodstub
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)换了一个程序,运行,出现错误:
Multiplemarkersatthisline-Syntaxerrorontoken"(",deletethistoken-Syntaxerrorontoken")",deletethistoken
Multiplemarkersatthisline
-Syntaxerrorontoken(s),misplacedconstruct(s)
-Syntaxerrorontoken"void",expected
-Syntaxerror,insert"interfaceIdentifier"tocomplete
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:
Unresolvedcompilationproblem:
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才写出来的。
在做该实验的过程中,犯了很多不应该犯的低级错误,特别是英文字母的大小写及中英式字符的运用这些低级错误,在以后的实验中,我要更加注意这方面的问题。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 面向对象程序设计 面向 对象 程序设计 实验 报告 十一
![提示](https://static.bdocx.com/images/bang_tan.gif)