ImageVerifierCode 换一换
格式:DOCX , 页数:14 ,大小:66.11KB ,
资源ID:23029394      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/23029394.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(中南大学JAVA课程设计报告.docx)为本站会员(b****2)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

中南大学JAVA课程设计报告.docx

1、中南大学JAVA课程设计报告中南大学JAVA课程设计报告 题 目: 简单图形实现 目录设计分析 .34程序结构 .4功能及说明.511操作方法 .1112实验结果 .12131、设计分析1、项目要求实现各种二维图形的基本操作,要求采用图形用户界面(1)实现圆、矩形、三角形的创建及参数修改(2)实现各种图形的绘制(3)求各种图形的面积和周长(4)实现同一类型图形的大小比较(5)实现同一类型的形状比较2、实现分析首先项目要求采用图形用户界面,当然首先要创建出一个界面JFrame出来。在这个界面中,首先做一个总体的布局:本次试验简单的采用流式布局,当然我们希望画图的时候有一个特定的区域,以便我们能够

2、控制边界,采用一个JPanel,将这个JPanel添加到JFrame中,我们在面板中画各种图形。当然我们还要有一些按钮,来标明形状和颜色。因此,我们的整个界面分为两大部分,上面为形状颜色按钮,下面为画图板。JAVA中自带有画出各种图形的函数,只需要我们获取一个画笔,然后利用这个画笔来调用各种方法即可。但是我们怎么控制利用我们的鼠标来画图呢,及在这里,鼠标就相当于一支笔。当然是利用监听器。在这个程序中,我们要用到三种监听器,ActionListener、MouseListener、MouseMotionListener。前面我们讲到我们的窗体中上一层是按钮,而这些按钮就要用到ActionList

3、ener监听器,后面两个监听器主要是在画图的过程中用到。我们再来看看我们的这个画图板要实现的功能。首先,要能画出各种图形,包括矩形,圆形,三角形,直线,曲线,当然还可以有其他的一些图形,在这里只列出一些有代表性的图形;其次,要能改变图形的颜色,当然,JAVA中的颜色有多种,在这里也只列出一些有代表性的颜色,比如黑色,红色,蓝色,绿色,黄色。在JAVA中画图有两种方式,一种直接画线条,里面还是背景色,还有一种就是用填充的方式来画图。这两种方式在JAVA中都有自带的方法,只需要我们去调用就可以了。然后,要能知道画出的图形是什么图形,以及画出图形的面积大小。这就需要在界面中添加两个文本框来显示形状和

4、面积。在这里,要注意的是这个面积是根据鼠标移动的位置来计算的,算出的单位是像素。最后,要有个橡皮擦按钮,只要一点击这个按钮,鼠标就像一块橡皮一样,可以擦掉画出来的图形。到此,我们已经分析的本次试验的大体结构以及要实现的目标功能。我们现在应该要对本次实验有一个清晰的认识,通过上面的分析,我们知道,本次试验只需要一个窗体JFrame、一个面板JPanel、三个监听器以及若干按钮就可以实现。2、程序结构3、功能及说明在本次实验中,总共设计了三个类,每个类都有特定的作用,下面就意义介绍着三个类。DrawSe.javaMouse.javaShape.java(1)、DrawSe.java首先我们开始这个

5、项目的第一步是从界面开始的,创建一个界面比较简单,就是那么几个语句。在DrawSe.java这个类的设计中,除了主方法,只有两个方法,其中一个就是将那个界面展示在我们面前,还有一个就是要实现重绘的功能。熟悉了整个类的功能后我们来分解这个类,让我们来看看这些功能具体是怎么实现出来的。首先在publicvoid showDS()这个方法中,主要功能是要将那个界面展示在我们面前,当然首先要用到以下语句来创建一个窗体。JFrame jf = new JFrame(); jf.setTitle(画图板二); jf.setSize(800, 600); jf.setDefaultCloseOperatio

6、n(JFrame.EXIT_ON_CLOSE); jf.setLocationRelativeTo(null); jf.setLayout(new FlowLayout(); jf.setVisable(true);这些语句是固定的,每个界面用到的可能也就是这些,这些语句的作用分别是:设置标题、设置大小、设置关闭方法、设置居中、设置流式布局、使之可见。此时一运行程序就会产生出一个JFrame窗体。在我们前面的分析中,在这个窗体中应该有一些按钮、文本框、JPanel等,因此,下面我们就来一步步添加这些组件。在这里,我们要注意的一点就是所有组件的添加要放在setVisable()之前,这样才能让添

7、加的组件可见。我们的形状按钮中,我们将它设置成一个个小的图片,要添加图片我们可以用到ImageIcon ,首先利用下面语句创建出这些ImageIcon对象。ImageIcon im1 = newImageIcon(this.getClass().getResource(直线.PNG); ImageIcon im2 = newImageIcon(this.getClass().getResource(矩形.PNG); ImageIcon im3 = newImageIcon(this.getClass().getResource(椭圆.PNG); ImageIcon im4 = newImage

8、Icon(this.getClass().getResource(三角.PNG); ImageIcon im5 = newImageIcon(this.getClass().getResource(曲线.PNG); ImageIcon im6 = newImageIcon(this.getClass().getResource(橡皮擦.PNG); ImageIcon im7 = newImageIcon(this.getClass().getResource(动直线.PNG); ImageIcon im8 = newImageIcon(this.getClass().getResource(扇

9、形.PNG); ImageIcon im9 = newImageIcon(this.getClass().getResource(多边.PNG);创建好这些对象后,使用下面的语句创建按钮对象,并将这些图片添加到按钮中。其中jb11.setActionCommand(橡皮擦.PNG)语句的作用是设置点击该按钮是应该获取的信息,即当点击这个按钮时就会返回橡皮擦.PNG这个字符串。JButton jb11 = newJButton(im6); jf.add(jb11); jb11.setPreferredSize(new Dimension(22, 22); jb11.setActionComman

10、d(橡皮擦.PNG); JButton jb1 = newJButton(im1); / 添加形状按钮 jf.add(jb1); jb1.setPreferredSize(new Dimension(22, 22); jb1.setActionCommand(直线.PNG); JButton jb2 = newJButton(im2); jf.add(jb2); jb2.setPreferredSize(new Dimension(22, 22); jb2.setActionCommand(矩形.PNG); JButton jb3 = newJButton(im3); jf.add(jb3);

11、 jb3.setPreferredSize(new Dimension(22, 22); jb3.setActionCommand(椭圆.PNG); JButton jb4 = newJButton(im4); jf.add(jb4); jb4.setPreferredSize(new Dimension(22, 22); jb4.setActionCommand(三角.PNG); JButton jb8 = newJButton(im5); jf.add(jb8); jb8.setPreferredSize(new Dimension(22, 22); jb8.setActionComman

12、d(曲线.PNG); JButton jb10 = newJButton(im7); jb10.setPreferredSize(new Dimension(22, 22); jb10.setActionCommand(动直线.PNG); jf.add(jb10); JButton jb9 = newJButton(im8); jb9.setPreferredSize(new Dimension(22, 22); jb9.setActionCommand(扇形.PNG); jf.add(jb9); JButton jb14 = newJButton(im9); / 添加形状按钮 jf.add(

13、jb14); jb14.setPreferredSize(new Dimension(22, 22); jb14.setActionCommand(多边.PNG);然后添加颜色按钮,这和添加形状按钮类似,只是颜色安妮中什么都不要放,只要设置一下按钮的背景颜色就可以了,也不要重新设置点击按钮时的监听信息。这样,颜色按钮就可以和形状按钮区分开来,点击按钮,当返回一个字符串时,就是形状按钮,当返回一个空字符串就是颜色按钮。接下来添加文本框用来显示信息。jla1= new JLabel( 形状); jf.add(jla1); jte1 = new JTextField(8); jf.add(jte1)

14、; jla2 = new JLabel(面积); jf.add(jla2); jte2 = new JTextField(8); jf.add(jte2);这个方法的最后一部分就是将这些按钮添加监听器,添加监听器的方法是先拿到监听器的对象,然后利用jb1.addActionListener(mouse)这个语句来添加监听器。由于监听是一个接口,因此我们不能直接new出监听器接口的对象,必须要先用一个子类来实现监听器接口,new出子类的对象,在这个语句中mouse就是一个实现了ActionListener接口的类的对象。在这个类中还有一个重绘的方法publicvoid paint(Graphic

15、s g),这个方法是JPanel 中的,在这里重写这个方法,在程序运行的时候,程序会自动调用这个方法。这个方法的作用是在我们移动后拉伸窗体的时候,我们画出的图形还是在那里不变。(2)、Mouse.java前面我们也说了,监听器是一个接口,不能直接实例化,我们要先用一个子类来实现这个接口,因此,这个类的主要作用就是实现监听器接口。这个类共实现了以下三个监听器MouseListener,ActionListener,MouseMotionListener实现接口的时候就要重写接口中的抽象方法。首先我们看看按钮添加的动作监听器,我们要点击按钮,要获取一个返回值,根据这个返回值来做出不同的反应。比如当

16、我们点击矩形按钮时,我们的画笔就要能够画出一个矩形来,如果我们还点了红色按钮,那么,我们的画笔就要能画出一个红色矩形来。那么,怎么才能实现这些功能呢,这就是监听器中的抽象方法要做的事。动作监听器中比较简单,只需要获取按钮中的信心,如果是一个字符串,就不要管,留给另外两个监听器去处理。当返回一个空字符串时,就是动作监听器要处理的事了。返回空字符串表示点击的是颜色按钮,要将画笔的颜色设置为该按钮的背景色。因此首先要获取该按钮的背景色,然后将画笔设置为该颜色。publicvoid actionPerformed(ActionEvent e) /动作监听器 str = e.getActionComma

17、nd(); if (.equals(str) JButton jb = (JButton) e.getSource(); color = jb.getBackground(); g.setColor(color); str = 直线.PNG; / 默认为直线 当我们点击形状按钮时,就要画出各种形状的图形出来。当我们点击直线时,画笔要画出一条直线。前面说过JAVA中有画各种图形的方法,只需要我们去调用就可以了。JAVA中有直接画直线的方法,因此画直线比较简单。if (直线.PNG.equals(str) g.drawLine(x1, y1, x2, y2); Shape line = new S

18、hape(x1,x2,y1,y2,直线,color); /创建出一个Shape对象 shapeindex+=line; /保存下画出的直线 jte1.setText(直线); jte2.setText(+0); 画矩形的方法如下:if (矩形.PNG.equals(str) g.drawRect(Math.min(x1, x2), Math.min(y1, y2), Math.abs(x1 - x2), Math.abs(y1 - y2); Shape ju = new Shape(x1,x2,y1,y2,矩形,color); shapeindex = ju; /存下矩形 index+; fl

19、oat s = Math.abs(x1 - x2)*Math.abs(y1 - y2); jte1.setText(矩形); jte2.setText(+(int)s); System.out.println(矩形 面积:+s); if (椭圆.PNG.equals(str) g.drawOval(Math.min(x1, x2), Math.min(y1, y2), Math.abs(x1 - x2), Math.abs(y1 - y2); Shape tuo = new Shape(x1,x2,y1,y2,椭圆,color); shapeindex+ = tuo; double s = 3

20、.14*Math.abs(x1 - x2)*Math.abs(y1 - y2)/4; jte1.setText(椭圆); jte2.setText(+(int)s); System.out.println(椭圆 面积:+s); if (三角.PNG.equals(str) g.drawLine(x1, y1, x2, y2); Shape s1 = new Shape(x1,x2,y1,y2,三角形,color); shapeindex+ = s1; x = x1; / 暂时保存x1,y1,x2,y2 这两个坐标,以便第二次点击时用到 y = y1; x0 = x2; y0 = y2; if

21、(三角.PNG.equals(str) if (x != x0) / str为“三角”且为第二次点击* g.drawLine(x, y, x1, y1); Shape s2 = new Shape(x,x1,y,y1,三角形,color); shapeindex+ = s2; g.drawLine(x0, y0, x1, y1); Shape s3 = new Shape(x0,x1,y0,y1,三角形,color); shapeindex+ = s3; double a,b,c,p,s; a = Math.sqrt(Math.abs(x1-x0)*Math.abs(x1-x0)+Math.a

22、bs(y1-y0)*Math.abs(y1-y0); b = Math.sqrt(Math.abs(x-x0)*Math.abs(x-x0)+Math.abs(y-y0)*Math.abs(y-y0); c = Math.sqrt(Math.abs(x1-x)*Math.abs(x1-x)+Math.abs(y1-y)*Math.abs(y1-y); p = (a+b+c)/2; s = Math.sqrt(p*(p-a)*(p-b)*(p-c); jte1.setText(三角形); jte2.setText(+(int)s); System.out.println(三角形 面积:+s);

23、到这里,这个类的基本功能已经实现的差不多了。(3)、Shape.java这个类的主要作用是定义一个形状类,将画出的图形保存。4、操作方法在画图板的这个小项目中,首先从主函数进入publicstaticvoid main(String args) /主方法 DrawSe ds = new DrawSe(); ds.showDS(); 调用showDs()这个方法,将界面展示在我们面前。若我们不点任何按钮直接在面板中画图,就会画出一条直线(默认是直线)。当我们点击按钮时,进入动作监听的方法,获取返回值,根据返回值的类型做出不同的反应。比如点击矩形按钮就会进入publicvoidmouseReleased(MouseEvent e)这个方法画出一个矩形。每当一个图形画好后,在文本框的显示区显示出该图形的形状以及面积。当点击颜色按钮时,又进入动作监听器,设置画笔的颜色。5、实验结果刚开始运行:画图:

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1