- 1、本文档共6页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
java简单绘图程序实验报告
华南师范大学本科学生实验报告
姓名_邱海森_ 学号 20082100079
院系 计算机学院 班级 08级网工7班
实验时间 2010_年 6 月 1 日
实验名称 java:简单绘图程序
指导老师及职称: 陈俊侠
华南师范大学教务处编印
Java实验 简单的绘图程序
一 实验目的
学会Netbeans的使用,能进行Netbeans的基本操作,能使用Netbeans构造一个图形界面框架
通过实验熟悉swing图形用户界面程序设计
熟悉java中的事件处理模型,每个事件动作代表的意义
进一步提高编程能力,学会独立思考,学会上网查找资料解决问题。
二 实验要求
以课本上随手画例程为蓝本,设计一个程序,该程序能够绘制基本的图形(包括圆形、矩形、直线等);要求有一个简单易操作的用户界面(包括菜单、按钮等组件)。
编写的程序要求能够实现保存和读取的功能
三 实验步骤
使用Netbeans设计程序的用户界面
新建一个Frame窗体,作为容器
向Frame窗体中添加基本组件,包括一个JMenuBar(菜单栏),向菜单栏中添加两个JMenu(菜单)(jMenu1、jMenu2),在jMenu1中添加四个jMenuItem(新建、打开、保存、退出),在jMenu2中添加四个jMenuItem(圆形、矩形、三角形、直线)。效果如下:
在Frame窗体上添加JTextArea文本区域,用来在上面绘制图形
添加四个单选按钮,用于选择图形,把四个按选按钮放进一个工具栏中,在同一个按钮组中,实现互斥。
效果如下:
至此,图形界面已经基本设计完毕
实现图形的绘制
(1)鼠标拖动绘制图形:添加鼠标按下事件,添加鼠标拖动事件,向其中填写正确的能执行的代码。
遇到的问题:可以实现鼠标拖动绘制图形,但是在鼠标拖动的过程中,却绘制出了多个图形。如图所示:
解决问题的方法:问题出在“鼠标拖动消息函数中”;我们在画图形时,应该先把“刚才”绘制的图形擦出掉。在绘制图形的过程中通过改变画笔的颜色实现多个图形的消除。
首先,在鼠标拖动事件中,把画笔的颜色设置成背景颜色(即白色),拖动鼠标时,绘制图形使用的是背景颜色,在原图形位置上重新画。这样我们是看不到的,可以说是擦除了。然后把画笔设置成前景色,绘制一次图形。如:画直线
Graphics g=jTextArea1.getGraphics(); //画笔
g.setColor(jTextArea1.getBackground()); // 画笔颜色设置成组件背景颜色
g.drawLine(pStart.x, pStart.y, pEnd.x, pEnd.y);// 在直线起点和终点之间画、//直线,用背景色在原直线位置上重复画直线就是擦除直线
g.setColor(jTextArea1.getForeground());//设置画笔颜色为前景色
g.drawLine(pStart.x, pStart.y, evt.getX(),evt.getY());//在直线的起点和光标的//当前拖动位置点之间画一条直线
pEnd=evt.getPoint();//把直线的终点更新为鼠标当前拖动位置点。以便下一//次画直线前擦除
程序基本上已经可以实现了简单的绘图功能。但是仍然有一些问题。
问题1:如果绘制的图形出现重叠,重叠的那部分会有模糊现象,会被“擦除”。如图:
原因分析:所绘制图形的有关信息没有保存起来,没有实现“交叉擦除现象”出现是重新绘制已画图形的功能。
解决方法:把已经绘制的图形的有关信息保存起来,当出现“交叉擦除现象”时重新绘制已经绘制好的图形。
我们引入几个类
抽象类:
类名:Figure
抽象成员函数:void DrawFigure (Graphics g)
2.直线类
类名 Line 父类:Figure
成员变量1:Point pS
成员变量2:Point pE
成员函数 1:成员变量的初始化构造函数
成员函数 2: 对父类中DrawFigure抽象函数的实现
3. 矩形类
类名:Rect父类:Figure
成员变量1:Point pS
成员变量2:Point pE
成员函数 1:成员变量的初始化构造函数
成员函数 2: 对父类中DrawFigure抽象函数的实现
4. 椭圆类
类名:Oval 父类:Figure
成员变量1:Point
文档评论(0)