Java菜单按钮控制绘图程序.docx
- 文档编号:15297685
- 上传时间:2023-07-03
- 格式:DOCX
- 页数:19
- 大小:189.94KB
Java菜单按钮控制绘图程序.docx
《Java菜单按钮控制绘图程序.docx》由会员分享,可在线阅读,更多相关《Java菜单按钮控制绘图程序.docx(19页珍藏版)》请在冰点文库上搜索。
Java菜单按钮控制绘图程序
一、程序开发背景1
二、程序分析与设计1
(一)程序功能要求1
(二)程序模块结构设计1
1、程序流程1
2、模块化功能结构分析2
三、程序的设计与实现3
(一)图形界面3
(二)图形界面的实现3
四、系统测试4
五、总结10
六、附件(程序代码)11
菜单按钮控制绘图程序
一、程序开发背景
进一步巩固Java课程中关于图形用户界面具体实现的知识,使用Eclipse开发平台来实现“菜单按钮控制绘图”课题。
二、程序分析与设计
为了复习和巩固Java程序设计基础,和进一步理解和掌握Java语言,学生要用Java语言设计一个完整的应用程序,使学生综合应用所学知识完成软件的分析、设计、调试和总结,可加深和巩固对理论教学和实验教学内容的掌握,使学生进一步掌握使用面向对象技术开发完整系统的方法。
(一)程序功能要求
功能要求:
实现简单绘图功能,具体要求:
画直线,画空心或实心椭圆、画空心或实心矩形、画多边形(图形的位置和大小可在程序中设定)。
(二)程序模块结构设计
1、程序流程
用菜单和按钮控制绘图流程如图一所示
图一菜单和按钮控制绘图流程图
绘制图形:
(1)直线
(2)空心椭圆
(3)实心椭圆
(4)空心矩形
(5)实心矩形
(6)多边形
2、模块化功能结构分析
设计程序功能模块如图二所示
用菜单和按钮控制绘图程序
图二功能模块图菜单绘制图形要求:
主菜单:
直线、椭圆、矩形、多边形菜单项:
(1)直线:
直线
(2)椭圆:
实心椭圆、空心椭圆
(3)矩形:
实心矩形、空心矩形
(4)多边形:
多边形
按钮项:
直线、空心椭圆、实心椭圆、空心矩形,实心矩形、多边形
三、程序的设计与实现
一)图形界面
图形界面用于显示绘制的图形,界面主要包括4个上标签、6个下标签和图形显示区域,其中上标签“椭圆”包含“实心椭圆”、“空心椭圆”两个子标签,“矩形”中又包含“实心矩形”,“空心矩形”两个子按钮。
(二)图形界面的实现
图形界面的具体实现
importjava.awt.*;
importjava.awt.event.*;
importjavax.swing.*;
以上代码用于导入以下程序所用到的包。
模块主体体代码:
publicclassDrawextendsJFrameimplementsActionListener
{
}
四、系统测试
程序运行结果
1、菜单控制下绘制“直线”如图三:
图三绘制“直线”图
图四绘制“空心椭圆”图
3、菜单控制下绘制“实心椭圆”如图五:
图五绘制“实心椭圆”图
图六绘制“空心矩形”图
5、菜单控制下绘制“实心矩形”如图七:
图七绘制“实心矩形”图
图八绘制“多边形”图
7、按钮控制下绘制“直线”如图九:
图九绘制“直线”图
图十绘制“空心椭圆”图
9、按钮控制下绘制“实心椭圆”如图十一:
图十一绘制“实心椭圆”图
图十二绘制“空心矩形”图
11、按钮控制下绘制“实心矩形”如图十三:
图十三绘制“实心矩形”图
图十四绘制“多边形”图
五、总结
本次Java课程设计我做的课题是菜单按钮绘制图形,实验过程中,将程序实现的功能分为两个模块,一是用菜单绘制图形,二是用按钮绘制图形,然后对这两个模块分别完成,在此过程中使我加深了对Java的理解,大致掌握Java语言的编辑,编译,调试程序,并将算法转变为程序实现。
在做此次实验后,我初步理解并能够操作和使用Java的if语句,Java的类、对象和方法,声明、定义和调用方法,理解实参和形参的含义。
学习创建简单类型的数组,并能用循环语句处理数组。
使用统一建模语言(UML)设计类,并实现类。
正确理解并能够熟练操作和使用Java类的继承关系,。
综合运用接口,类的知识。
理解线程的
基本概念。
所以我觉得,学习java要不断地通过上机来增强自己对知识的学习与认识。
书本要学有所用,才是真正的融会贯通。
最重要的,在实验中,我们会遇到种种的难题,或由于粗心,或由于知识的匮乏,或其他,但我们不能有畏难情绪。
一遇到困难就放弃,我们永远都不能成就自己。
学会自己查阅资料,学会寻求他人的帮助,一时的不会更能加深我们的记忆,促进我们的求知欲。
所以不能放弃自己。
六、附件(程序代码)
附录:
importjava.awt.*;
importjava.awt.event.*;
importjavax.swing.*;
publicclassDrawextendsJFrameimplementsActionListener{
privateJPaneljpanel;
privateHuaCanvascanvas;//自定义画布组件intflag=0;
publicDraw()
{
super("绘制图形");
Dimensiondim=getToolkit().getScreenSize();this.setBounds(dim.width/3,dim.height/4,dim.width/4,dim.height/2);
//设置显示窗口位置和大小
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
this.jpanel=newJPanel(newGridLayout(2,4,32,13));
//设置为2行4列的GridLayout布局
添加jpanel
添加canvas调用自定义方法,添加按钮调用自定义方法,添加菜单
canvas=newHuaCanvas();this.getContentPane().add(jpanel,"South");//this.getContentPane().add(canvas);//this.addmyJButon();//
this.addmyMenu();//this.setVisible(true);
}
publicvoidaddmyMenu()
{
JMenuBarmenubar=newJMenuBar();//添加菜单this.setJMenuBar(menubar);
Stringmenustr[]={"直线","椭圆","矩形","多边形"};
JMenumenu[]=newJMenu[menustr.length];for(inti=0;i { menu[i]=newJMenu(menustr[i]);menubar.add(menu[i]); } JMenuItemitem01=newJMenuItem("直线");item01.addActionListener(this);menu[0].add(item01); JMenuItemitem31=newJMenuItem("多边形");item31.addActionListener(this);menu[3].add(item31); JMenuItemitem11=newJMenuItem("空心椭圆");item11.addActionListener(this);menu[1].add(item11); JMenuItemitem12=newJMenuItem("实心椭圆");item12.addActionListener(this);menu[1].add(item12); JMenuItemitem21=newJMenuItem("空心矩形");item21.addActionListener(this);menu[2].add(item21); JMenuItemitem22=newJMenuItem("实心矩形");item22.addActionListener(this);menu[2].add(item22); } publicvoidaddmyJButon(){ JButtona=newJButton(" 直线"); // 添加"直线"按钮 a.addActionListener(this); JButtonb=newJButton(" 空心椭圆") ;// 添加"空心椭圆"按钮 b.addActionListener(this); JButtonc=newJButton(" 空心矩形") ;// 添加"空心矩形"按钮 c.addActionListener(this); JButtond=newJButton(" 多边形"); // 添加"多边形"按钮 d.addActionListener(this); JButtone=newJButton(" 实心椭圆") ;// 添加"实心椭圆"按钮 e.addActionListener(this); JButtonf=newJButton("实心矩形");//添加"实心矩形"按钮 f.addActionListener(this); JButtong=newJButton(""); jpanel.add(a,0); // 将按钮添加到 jpanel1 中 jpanel.add(b,1); // 将按钮添加到 jpanel1 中 jpanel.add(c,2); // 将按钮添加到 jpanel1 中 jpanel.add(d,3); // 将按钮添加到 jpanel1 中 jpanel.add(e,4); // 将按钮添加到 jpanel1 中 jpanel.add(f,5); // 将按钮添加到 jpanel1 中 publicvoidactionPerformed(ActionEvente)//{ canvas.cz(e);// } classHuaCanvasextendsCanvasimplementsMouseListener,MouseMotionListener//{ Pointstart=null,end=null,lastend=null;publicHuaCanvas() {start=end=lastend=null;this.addMouseMotionListener(this);this.addMouseListener(this); } publicvoidmousePressed(MouseEventme) //鼠标按下事件处理方法,{ start=newPoint(me.getX(),me.getY()); } publicvoidmouseReleased(MouseEventme)//释放鼠标 { end=newPoint(me.getX(),me.getY()); repaint(); } 单击事件处理方法 调用cz()方法 鼠标监听器 以下实现MouseListener接口 publicvoidmouseClicked(MouseEventme){} //单击鼠标 publicvoidmouseEntered(MouseEventme){} //鼠标进入 publicvoidmouseExited(MouseEventme){} //鼠标离开 publicvoidmouseMoved(MouseEventme){} 接口 接口 //鼠标移动和实现MouseMotionListener publicvoidmouseDragged(MouseEventme) //鼠标拖动,实现MouseMotionListener{ lastend=end; end=newPoint(me.getX(),me.getY());repaint(); } publicvoidcz(ActionEvente) { if(e.getActionCommand()=="直线") //响应"直线"事件的操作 {flag=1;repaint(); } if(e.getActionCommand()=="空心椭圆") //响应"空心椭圆"事件的操作 {flag=2;repaint(); } if(e.getActionCommand()=="实心椭圆") //响应"实心椭圆"事件的操作 {flag=3;repaint(); } if(e.getActionCommand()=="空心矩形") //响应"空心矩形"事件的操作 {flag=4;repaint(); if(e.getActionCommand()=="实心矩形") //响应"实心矩形"事件的操作 { flag=5;repaint(); } if(e.getActionCommand()=="多边形")//响应"多边形"事件的操作 { flag=6;repaint(); } start=null;end=null;lastend=null;} publicvoidpaint(Graphicsg)//在Canvas画布上作图{ if(start! =null&&lastend! =null) { g.setColor(this.getBackground()); if(flag==1) { g.drawLine(start.x,start.y,lastend.x,lastend.y); g.setColor(Color.black);//设置线条颜色为黑色g.drawLine(start.x,start.y,end.x,end.y); //绘制直线 } if(flag==2) { g.drawOval(start.x,start.y,lastend.x,lastend.y); g.setColor(Color.black);//设置线条颜色为黑色g.drawOval(start.x,start.y,end.x,end.y); //绘制空心椭圆 } if(flag==3) { g.fillOval(start.x,start.y,lastend.x,lastend.y); g.setColor(Color.black);//设置线条颜色为黑色g.fillOval(start.x,start.y,end.x,end.y); //绘制实心椭圆 } if(flag==4) 设置线条颜色为黑色 设置线条颜色为黑色 g.drawRect(start.x,start.y,lastend.x,lastend.y); g.setColor(Color.black);// g.drawRect(start.x,start.y,end.x,end.y);//绘制空心矩形 } if(flag==5) { g.fillRect(start.x,start.y,lastend.x,lastend.y); g.setColor(Color.black);// g.fillRect(start.x,start.y,end.x,end.y); }if(flag= { //绘制实心矩形 =6) intxpoints[]={30,200,30,200,30};// 绘制多边形 intypoints[]={30,30,200,200,30};// 绘制多边形 intnum=5; g.setColor(Color.black);// 设置线条颜色为黑色 g.drawPolygon(xpoints,ypoints,num); } publicstaticvoidmain(Stringarg[]){ newDraw(); } } JAVA课程设计成绩评定 成绩评定: (百分制)指导教师签字: 检查时间: 七月五日 系部签字: 2013年7月5日
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 菜单 按钮 控制 绘图 程序