当前位置:文档之家› Java_菜单按钮控制绘图程序

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 个下标签和图形显示区域,其中上标签“椭圆”包含“实心椭圆” 、“空心椭圆”两个子标签,“矩形”中又包含“实心矩形” ,“空心矩形” 两个子按钮。

(二)图形界面的实现图形界面的具体实现import java.awt.*;import java.awt.event.*;import javax.swing.*;以上代码用于导入以下程序所用到的包。

模块主体体代码:public class Draw extends JFrame implements ActionListener {}四、系统测试程序运行结果1、菜单控制下绘制“直线”如图三:图三绘制“直线”图2、菜单控制下绘制“空心椭圆”如图四:图四绘制“空心椭圆”图3、菜单控制下绘制“实心椭圆”如图五:图五绘制“实心椭圆”图4、菜单控制下绘制“空心矩形”如图六:图六绘制“空心矩形”图5、菜单控制下绘制“实心矩形”如图七:图七绘制“实心矩形”图6、菜单控制下绘制“多边形”如图八:图八绘制“多边形”图7、按钮控制下绘制“直线”如图九:图九绘制“直线”图8、按钮控制下绘制“空心椭圆”如图十:图十绘制“空心椭圆”图9、按钮控制下绘制“实心椭圆”如图十一:图十一绘制“实心椭圆”图10、按钮控制下绘制“空心矩形”如图十二:图十二绘制“空心矩形”图11、按钮控制下绘制“实心矩形”如图十三:图十三绘制“实心矩形”图12、按钮控制下绘制“多边形”如图十四:图十四绘制“多边形”图五、总结本次Java 课程设计我做的课题是菜单按钮绘制图形,实验过程中,将程序实现的功能分为两个模块,一是用菜单绘制图形,二是用按钮绘制图形,然后对这两个模块分别完成,在此过程中使我加深了对Java 的理解,大致掌握Java 语言的编辑,编译,调试程序,并将算法转变为程序实现。

在做此次实验后,我初步理解并能够操作和使用Java的if 语句,Java 的类、对象和方法,声明、定义和调用方法,理解实参和形参的含义。

学习创建简单类型的数组,并能用循环语句处理数组。

使用统一建模语言(UML)设计类,并实现类。

正确理解并能够熟练操作和使用Java 类的继承关系,。

综合运用接口,类的知识。

理解线程的基本概念。

所以我觉得,学习java 要不断地通过上机来增强自己对知识的学习与认识。

书本要学有所用,才是真正的融会贯通。

最重要的,在实验中,我们会遇到种种的难题,或由于粗心,或由于知识的匮乏,或其他,但我们不能有畏难情绪。

一遇到困难就放弃,我们永远都不能成就自己。

学会自己查阅资料,学会寻求他人的帮助,一时的不会更能加深我们的记忆,促进我们的求知欲。

所以不能放弃自己。

六、附件(程序代码)附录:import java.awt.*;import java.awt.event.*;import javax.swing.*;public class Draw extends JFrame implements ActionListener {private JPanel jpanel;private HuaCanvas canvas; // 自定义画布组件int flag=0;public Draw(){super(" 绘制图形");Dimension dim = getToolkit().getScreenSize(); this.setBounds(dim.width/3 ,dim.height/4, dim.width/4 , dim.height/2);// 设置显示窗口位置和大小this.setDefaultCloseOperation(EXIT_ON_CLOSE);this.jpanel=new JPanel(new GridLayout(2,4,32,13));// 设置为 2 行 4 列的GridLayout 布局canvas=new HuaCanvas();this.getContentPane().add(jpanel,"South"); // this.getContentPane().add(canvas); //this.addmyJButon(); //this.addmyMenu(); //this.setVisible(true);}public void addmyMenu()添加jpanel添加canvas 调用自定义方法,添加按钮调用自定义方法,添加菜单{JMenuBar menubar = new JMenuBar(); // 添加菜单this.setJMenuBar(menubar);String menustr[] = {" 直线"," 椭圆"," 矩形"," 多边形"};JMenu menu[] = new JMenu[menustr.length]; for(int i = 0; i<menustr.length; i++){menu[i] = new JMenu(menustr[i]); menubar.add(menu[i]);}JMenuItem item01 = new JMenuItem(" 直线"); item01.addActionListener(this);menu[0].add(item01);JMenuItem item31 = new JMenuItem(" 多边形"); item31.addActionListener(this);menu[3].add(item31);JMenuItem item11 = new JMenuItem(" 空心椭圆"); item11.addActionListener(this);menu[1].add(item11);JMenuItem item12 = new JMenuItem(" 实心椭圆"); item12.addActionListener(this);menu[1].add(item12);JMenuItem item21 = new JMenuItem(" 空心矩形"); item21.addActionListener(this);menu[2].add(item21);JMenuItem item22 = new JMenuItem(" 实心矩形"); item22.addActionListener(this);menu[2].add(item22);}public void addmyJButon() {JButton a=new JButton(" 直线"); // 添加"直线"按钮a.addActionListener(this);JButton b=new JButton(" 空心椭圆") ; // 添加"空心椭圆"按钮b.addActionListener(this);JButton c=new JButton(" 空心矩形") ; // 添加" 空心矩形"按钮c.addActionListener(this);JButton d=new JButton(" 多边形"); // 添加"多边形" 按钮d.addActionListener(this);JButton e=new JButton(" 实心椭圆") ; // 添加"实心椭圆"按钮e. addActionListener(this);JButton f=new JButton(" 实心矩形"); // 添加"实心矩形" 按钮f. addActionListener(this);JButton g=new JButton(" ");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 中public void actionPerformed(ActionEvent e) // {canvas.cz(e); //}class HuaCanvas extends Canvas implementsMouseListener, MouseMotionListener // { Point start=null, end=null, lastend=null; publicHuaCanvas(){ start=end=lastend=null;this.addMouseMotionListener(this);this.addMouseListener(this);}public void mousePressed(MouseEvent me)// 鼠标按下事件处理方法,{start = new Point(me.getX(), me.getY());}public void mouseReleased(MouseEvent me) // 释放鼠标{end = new Point(me.getX(), me.getY());repaint();}public void mouseClicked(MouseEvent me) {}单击事件处理方法调用cz() 方法鼠标监听器以下实现MouseListener 接口// 单击鼠标public void mouseEntered(MouseEvent me) {}// 鼠标进入public void mouseExited(MouseEvent me) {}// 鼠标离开public void mouseMoved(MouseEvent me){}// 鼠标移动和实现MouseMotionListenerpublic void mouseDragged(MouseEvent me)// 鼠标拖动,实现MouseMotionListener { lastend = end;end = new Point(me.getX(), me.getY()); repaint();}public void cz(ActionEvent e){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; }public void paint(Graphics g) // 在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)int xpoints[] = {30, 200, 30, 200, 30}; // 绘制多边形int ypoints[] = {30, 30, 200, 200, 30}; //绘制多边形int num = 5;g.setColor(Color.black); // 设置线条颜色为黑色g.drawPolygon(xpoints, ypoints, num);}public static void main(String arg[]) {new Draw();}}设置线条颜色为黑色设置线条颜色为黑色JAVA课程设计成绩评定成绩评定:(百分制)指导教师签字:检查时间:七月五日系部签字:2013 年7 月5 日。

相关主题