中南大学JAVA课程设计报告Word格式文档下载.docx

上传人:b****2 文档编号:396036 上传时间:2023-04-28 格式:DOCX 页数:14 大小:66.11KB
下载 相关 举报
中南大学JAVA课程设计报告Word格式文档下载.docx_第1页
第1页 / 共14页
中南大学JAVA课程设计报告Word格式文档下载.docx_第2页
第2页 / 共14页
中南大学JAVA课程设计报告Word格式文档下载.docx_第3页
第3页 / 共14页
中南大学JAVA课程设计报告Word格式文档下载.docx_第4页
第4页 / 共14页
中南大学JAVA课程设计报告Word格式文档下载.docx_第5页
第5页 / 共14页
中南大学JAVA课程设计报告Word格式文档下载.docx_第6页
第6页 / 共14页
中南大学JAVA课程设计报告Word格式文档下载.docx_第7页
第7页 / 共14页
中南大学JAVA课程设计报告Word格式文档下载.docx_第8页
第8页 / 共14页
中南大学JAVA课程设计报告Word格式文档下载.docx_第9页
第9页 / 共14页
中南大学JAVA课程设计报告Word格式文档下载.docx_第10页
第10页 / 共14页
中南大学JAVA课程设计报告Word格式文档下载.docx_第11页
第11页 / 共14页
中南大学JAVA课程设计报告Word格式文档下载.docx_第12页
第12页 / 共14页
中南大学JAVA课程设计报告Word格式文档下载.docx_第13页
第13页 / 共14页
中南大学JAVA课程设计报告Word格式文档下载.docx_第14页
第14页 / 共14页
亲,该文档总共14页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

中南大学JAVA课程设计报告Word格式文档下载.docx

《中南大学JAVA课程设计报告Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《中南大学JAVA课程设计报告Word格式文档下载.docx(14页珍藏版)》请在冰点文库上搜索。

中南大学JAVA课程设计报告Word格式文档下载.docx

本次试验简单的采用流式布局,当然我们希望画图的时候有一个特定的区域,以便我们能够控制边界,采用一个JPanel,将这个JPanel添加到JFrame中,我们在面板中画各种图形。

当然我们还要有一些按钮,来标明形状和颜色。

因此,我们的整个界面分为两大部分,上面为形状颜色按钮,下面为画图板。

JAVA中自带有画出各种图形的函数,只需要我们获取一个画笔,然后利用这个画笔来调用各种方法即可。

但是我们怎么控制利用我们的鼠标来画图呢,及在这里,鼠标就相当于一支笔。

当然是利用监听器。

在这个程序中,我们要用到三种监听器,ActionListener、MouseListener、MouseMotionListener。

前面我们讲到我们的窗体中上一层是按钮,而这些按钮就要用到ActionListener监听器,后面两个监听器主要是在画图的过程中用到。

我们再来看看我们的这个画图板要实现的功能。

首先,要能画出各种图形,包括矩形,圆形,三角形,直线,曲线,当然还可以有其他的一些图形,在这里只列出一些有代表性的图形;

其次,要能改变图形的颜色,当然,JAVA中的颜色有多种,在这里也只列出一些有代表性的颜色,比如黑色,红色,蓝色,绿色,黄色。

在JAVA中画图有两种方式,一种直接画线条,里面还是背景色,还有一种就是用填充的方式来画图。

这两种方式在JAVA中都有自带的方法,只需要我们去调用就可以了。

然后,要能知道画出的图形是什么图形,以及画出图形的面积大小。

这就需要在界面中添加两个文本框来显示形状和面积。

在这里,要注意的是这个面积是根据鼠标移动的位置来计算的,算出的单位是像素。

最后,要有个橡皮擦按钮,只要一点击这个按钮,鼠标就像一块橡皮一样,可以擦掉画出来的图形。

到此,我们已经分析的本次试验的大体结构以及要实现的目标功能。

我们现在应该要对本次实验有一个清晰的认识,通过上面的分析,我们知道,本次试验只需要一个窗体JFrame、一个面板JPanel、三个监听器以及若干按钮就可以实现。

2、程序结构

3、功能及说明

在本次实验中,总共设计了三个类,每个类都有特定的作用,下面就意义介绍着三个类。

DrawSe.java

Mouse.java

Shape.java

(1)、DrawSe.java

首先我们开始这个项目的第一步是从界面开始的,创建一个界面比较简单,就是那么几个语句。

在DrawSe.java这个类的设计中,除了主方法,只有两个方法,其中一个就是将那个界面展示在我们面前,还有一个就是要实现重绘的功能。

熟悉了整个类的功能后我们来分解这个类,让我们来看看这些功能具体是怎么实现出来的。

首先在publicvoidshowDS()这个方法中,主要功能是要将那个界面展示在我们面前,当然首先要用到以下语句来创建一个窗体。

JFramejf=newJFrame();

jf.setTitle("

画图板二"

);

jf.setSize(800,600);

jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

jf.setLocationRelativeTo(null);

jf.setLayout(newFlowLayout());

jf.setVisable(true);

这些语句是固定的,每个界面用到的可能也就是这些,这些语句的作用分别是:

设置标题、设置大小、设置关闭方法、设置居中、设置流式布局、使之可见。

此时一运行程序就会产生出一个JFrame窗体。

在我们前面的分析中,在这个窗体中应该有一些按钮、文本框、JPanel等,因此,下面我们就来一步步添加这些组件。

在这里,我们要注意的一点就是所有组件的添加要放在setVisable()之前,这样才能让添加的组件可见。

我们的形状按钮中,我们将它设置成一个个小的图片,要添加图片我们可以用到ImageIcon,首先利用下面语句创建出这些ImageIcon对象。

ImageIconim1=newImageIcon(this.getClass().getResource("

直线.PNG"

));

ImageIconim2=newImageIcon(this.getClass().getResource("

矩形.PNG"

ImageIconim3=newImageIcon(this.getClass().getResource("

椭圆.PNG"

ImageIconim4=newImageIcon(this.getClass().getResource("

三角.PNG"

ImageIconim5=newImageIcon(this.getClass().getResource("

曲线.PNG"

ImageIconim6=newImageIcon(this.getClass().getResource("

橡皮擦.PNG"

ImageIconim7=newImageIcon(this.getClass().getResource("

动直线.PNG"

ImageIconim8=newImageIcon(this.getClass().getResource("

扇形.PNG"

ImageIconim9=newImageIcon(this.getClass().getResource("

多边.PNG"

创建好这些对象后,使用下面的语句创建按钮对象,并将这些图片添加到按钮中。

其中jb11.setActionCommand("

)语句的作用是设置点击该按钮是应该获取的信息,即当点击这个按钮时就会返回"

这个字符串。

JButtonjb11=newJButton(im6);

jf.add(jb11);

jb11.setPreferredSize(newDimension(22,22));

jb11.setActionCommand("

JButtonjb1=newJButton(im1);

//添加形状按钮

jf.add(jb1);

jb1.setPreferredSize(newDimension(22,22));

jb1.setActionCommand("

JButtonjb2=newJButton(im2);

jf.add(jb2);

jb2.setPreferredSize(newDimension(22,22));

jb2.setActionCommand("

JButtonjb3=newJButton(im3);

jf.add(jb3);

jb3.setPreferredSize(newDimension(22,22));

jb3.setActionCommand("

JButtonjb4=newJButton(im4);

jf.add(jb4);

jb4.setPreferredSize(newDimension(22,22));

jb4.setActionCommand("

JButtonjb8=newJButton(im5);

jf.add(jb8);

jb8.setPreferredSize(newDimension(22,22));

jb8.setActionCommand("

JButtonjb10=newJButton(im7);

jb10.setPreferredSize(newDimension(22,22));

jb10.setActionCommand("

jf.add(jb10);

JButtonjb9=newJButton(im8);

jb9.setPreferredSize(newDimension(22,22));

jb9.setActionCommand("

jf.add(jb9);

JButtonjb14=newJButton(im9);

jf.add(jb14);

jb14.setPreferredSize(newDimension(22,22));

jb14.setActionCommand("

然后添加颜色按钮,这和添加形状按钮类似,只是颜色安妮中什么都不要放,只要设置一下按钮的背景颜色就可以了,也不要重新设置点击按钮时的监听信息。

这样,颜色按钮就可以和形状按钮区分开来,点击按钮,当返回一个字符串时,就是形状按钮,当返回一个空字符串就是颜色按钮。

接下来添加文本框用来显示信息。

jla1=newJLabel("

形状"

jf.add(jla1);

jte1=newJTextField(8);

jf.add(jte1);

jla2=newJLabel("

面积"

jf.add(jla2);

jte2=newJTextField(8);

jf.add(jte2);

这个方法的最后一部分就是将这些按钮添加监听器,添加监听器的方法是先拿到监听器的对象,然后利用jb1.addActionListener(mouse)这个语句来添加监听器。

由于监听是一个接口,因此我们不能直接new出监听器接口的对象,必须要先用一个子类来实现监听器接口,new出子类的对象,在这个语句中mouse就是一个实现了ActionListener接口的类的对象。

在这个类中还有一个重绘的方法publicvoidpaint(Graphicsg),这个方法是JPanel中的,在这里重写这个方法,在程序运行的时候,程序会自动调用这个方法。

这个方法的作用是在我们移动后拉伸窗体的时候,我们画出的图形还是在那里不变。

(2)、Mouse.java

前面我们也说了,监听器是一个接口,不能直接实例化,我们要先用一个子类来实现这个接口,因此,这个类的主要作用就是实现监听器接口。

这个类共实现了以下三个监听器MouseListener,ActionListener,MouseMotionListener

实现接口的时候就要重写接口中的抽象方法。

首先我们看看按钮添加的动作监听器,我们要点击按钮,要获取一个返回值,根据这个返回值来做出不同的反应。

比如当我们点击矩形按钮时,我们的画笔就要能够画出一个矩形来,如果我们还点了红色按钮,那么,我们的画笔就要能画出一个红色矩形来。

那么,怎么才能实现这些功能呢,这就是监听器中的抽象方法要做的事。

动作监听器中比较简单,只需要获取按钮中的信心,如果是一个字符串,就不要管,留给另外两个监听器去处理。

当返回一个空字符串时,就是动作监听器要处理的事了。

返回空字符串表示点击的是颜色按钮,要将画笔的颜色设置为该按钮的背景色。

因此首先要获取该按钮的背景色,然后将画笔设置为该颜色。

publicvoidactionPerformed(ActionEvente){//动作监听器

str=e.getActionCommand();

if("

"

.equals(str)){

JButtonjb=(JButton)e.getSource();

color=jb.getBackground();

g.setColor(color);

str="

;

//默认为直线

}

}

当我们点击形状按钮时,就要画出各种形状的图形出来。

当我们点击直线时,画笔要画出一条直线。

前面说过JAVA中有画各种图形的方法,只需要我们去调用就可以了。

JAVA中有直接画直线的方法,因此画直线比较简单。

if("

g.drawLine(x1,y1,x2,y2);

Shapeline=newShape(x1,x2,y1,y2,"

直线"

color);

//创建出一个Shape对象

shape[index++]=line;

//保存下画出的直线

jte1.setText("

jte2.setText("

+0);

画矩形的方法如下:

g.drawRect(Math.min(x1,x2),Math.min(y1,y2),Math.abs(x1-x2),

Math.abs(y1-y2));

Shapeju=newShape(x1,x2,y1,y2,"

矩形"

shape[index]=ju;

//存下矩形

index++;

floats=Math.abs(x1-x2)*Math.abs(y1-y2);

+(int)s);

System.out.println("

矩形面积:

+s);

g.drawOval(Math.min(x1,x2),Math.min(y1,y2),Math.abs(x1-x2),

Shapetuo=newShape(x1,x2,y1,y2,"

椭圆"

shape[index++]=tuo;

doubles=3.14*Math.abs(x1-x2)*Math.abs(y1-y2)/4;

椭圆面积:

Shapes1=newShape(x1,x2,y1,y2,"

三角形"

shape[index++]=s1;

x=x1;

//暂时保存x1,y1,x2,y2这两个坐标,以便第二次点击时用到

y=y1;

x0=x2;

y0=y2;

.equals(str)){

if(x!

=x0){//str为“三角”且为第二次点击***

g.drawLine(x,y,x1,y1);

Shapes2=newShape(x,x1,y,y1,"

shape[index++]=s2;

g.drawLine(x0,y0,x1,y1);

Shapes3=newShape(x0,x1,y0,y1,"

shape[index++]=s3;

doublea,b,c,p,s;

a=Math.sqrt(Math.abs(x1-x0)*Math.abs(x1-x0)+Math.abs(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("

System.out.println("

三角形面积:

}

到这里,这个类的基本功能已经实现的差不多了。

(3)、Shape.java

这个类的主要作用是定义一个形状类,将画出的图形保存。

4、操作方法

在画图板的这个小项目中,首先从主函数进入

publicstaticvoidmain(String[]args){//主方法

DrawSeds=newDrawSe();

ds.showDS();

调用showDs()这个方法,将界面展示在我们面前。

若我们不点任何按钮直接在面板中画图,就会画出一条直线(默认是直线)。

当我们点击按钮时,进入动作监听的方法,获取返回值,根据返回值的类型做出不同的反应。

比如点击矩形按钮就会进入publicvoidmouseReleased(MouseEvente)这个方法画出一个矩形。

每当一个图形画好后,在文本框的显示区显示出该图形的形状以及面积。

当点击颜色按钮时,又进入动作监听器,设置画笔的颜色。

5、实验结果

刚开始运行:

画图:

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 法律文书 > 调解书

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2