




已阅读5页,还剩11页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
佛山科学技术学院可视化编程技术课程设计报告画图软件设计学生姓名: 周敏婷 学 号: 2011914123年级专业:11级教育技术学2班指导老师: 容汝佳学 院: 教育科学学院广东佛山提交日期:2013年6月目 录1. 前言22概要设计3 2.1 开发环境 3 2.2 画图软件功能 3 2.3 界面设计 3 2.4 类的框架结构图 43. 详细设计 4 3.1 使用的JAVA类的说明 4 3.2 类的主要方法 53.2.1 颜色选择器 53.2.2 控制画笔样式 53.2.3 选取颜色按钮的监听件类 63.2.4 设计总体认识 63.2.5 程序流程图 74. 运行结果75. 测试分析8 5.1 程序运行情况86. 源程序8参考文献14设计总结141摘要:该程序是一个图形界面的简单的java画图软件,具有良好的界面,使用人员能快捷简单地进行操作。该画图软件操作较为简单,只需要一直按着左键就能根据你鼠标移动的方面,画出你想要的图案。你也可以选择你自己想到的颜色和画笔的粗细。而且可以显示你当前的画笔的状态。界面为灰白对称。是一个非常简单的作图工具,让人能轻松上手。关键字:java,画图类,方法,事件1 前言随着科学技术的不断发展,计算机已经成为我们工作学习和生活中不可缺少的工具。文本编辑器是个人计算机最司空见惯的应用程序了,在学习了Java语言之后,我决定使用Java语言编写一个简单的画图工具,可以实现简单的画图作图功能,满足日常基本的工作学习和娱乐需要。Java是由Sun公司开发的新一代纯面向对象的网络编程语言。其目标是建立一种在任意种机器、任一种操作系统的网络环境中运行的软件,实行所谓的“程序写一次,到处运行”的目标。正因为如此,Java已成为当今Internet上最流行、最受欢迎的一种程序开发语言。Java开发小组把Java按特性分为基本版、移动版、企业版,每个版本有一个软件开发包。Java基本版本叫Java 2标准版(Java 2 Standard Edition,J2SE),它包含建立Java应用程序或者是Applet所需的应用程序编程接口(API)。Java 2移动版(The Java 2 Mobile Edition,J2ME)包含创建无线Java应用程序的API。还有Java 2企业版(The Java 2 Enterprise,J2EE)是J2SE的增强版本,包含建立多层架构应用程序API。Java语言是由C+语言发展起而来的,是一种彻底的面向对象的程序设计语言。作为一种纯面向对象的程序设计语言,它非常适合大型软件的开发。Java语言去掉了C+语言的一些容易引起错误的特性。Java语言的特点有:面向对象、跨平台、安全性、多线程和图形功能强。2 概要设计2.1开发环境 开发平台:Microsoft Windows XP Professional Service Pack 2 开发工具:JBuilder 2007 + JDK 1.6.0_022.2画图软件功能功能 1:按着鼠标左键能随心所欲的画出想要的图形 功能 2:可自助地选择画笔的粗细功能3:可自助地颜色选择功能4:可以显示你当前的画笔状态 2.3界面设计图2.3 画图面板2.4类的框架结构图DrawPane 属性package kasa; 操作public class DrawPane extends Frameclass ButtonColorAction implements ActionListener class ButtonCursor extends MouseAdapterclass ButtonStrokeAction implements ActionListenerclass Palette extends Panel implements MouseListener, MouseMotionListener 图2.43详细设计3.1画图软件使用的Java类的说明类名:DrawPane类 作用:主类,继承的父类: Frame类,构造方法DrawPane()实现了放各种组件,界面的构造,构造画图板 颜色选择器和画笔的粗细等功能 类名:ButtonColorAction 实现的接口:ActionListener 作用:选取颜色按钮的监听事件类 监听按钮动作类名:ButtonCursor作用:鼠标进入按钮变换光标样式监听事件类 继承的类:MouseAdapter 继承了鼠标的适配器 类名:ButtonStrokeAction作用:设置画笔的监听事件类 实现的接口:ActionListener 作用:选取颜色按钮的监听事件类 监听按钮动作类名:Palette 继承的父类:Panel类 作用:画板类 实现的接口:MouseListener, MouseMotionListener 重写了鼠标监听器的五个方法mouseMoved(MouseEvent e)、mouseDragged(MouseEvent e)、mouseExited(MouseEvent e)、mouseEntered(MouseEvent e)和mouseReleased(MouseEvent e)。同时实现了MouseMotionListener接口,调用addMouseMotionListener(this)方法对鼠标的动作进行监听3.2类的主要方法3.2.1 颜色选择器: Panel pane = new Panel(new GridLayout(2, 1); / 画笔颜色选择器Panel paneColor = new Panel(new GridLayout(1, 13); / 12 个颜色选择按钮Button buttonColor = new Button12;Color color = Color.black, Color.blue, Color.cyan, Color.darkGray,Color.gray, Color.green, Color.magenta, Color.orange,Color.pink, Color.red, Color.white, Color.yellow ; / 显示当前颜色的面板3.2.2控制画笔样式:Panel paneStroke = new Panel(new GridLayout(1, 13); / 控制画笔样式buttonStrokeAction = new ButtonStrokeAction();Button buttonStroke = new Button11;buttonStroke0 = new Button(1);buttonStroke1 = new Button(3);buttonStroke2 = new Button(5);buttonStroke3 = new Button(7);buttonStroke4 = new Button(9);buttonStroke5 = new Button(11);buttonStroke6 = new Button(13);buttonStroke7 = new Button(15);buttonStroke8 = new Button(17);buttonStroke9 = new Button();buttonStroke10 = new Button();drawWidth = new Label(颜色, Label.CENTER);drawCap = new Label(, Label.CENTER);drawWidth.setBackground(Color.lightGray);drawCap.setBackground(Color.lightGray);paneStroke.add(drawWidth);3.2.3选取颜色按钮的监听事件类:class ButtonColorAction implements ActionListener public void actionPerformed(ActionEvent e) Colorcolor_temp=(Button) e.getSource().getBackground();nonceColor.setBackground(color_temp);palette.setColor(color_temp); 3.2.4设计的总体认识l JAVA设计的摘要l JAVA设计的目录结构l JAVA设计的概要和详细设计l JAVA设计的版权意识l JAVA设计需要编译的环境l JAVA设计的实用性3.2.5程序流程图开始颜色选择粗细选择绘图绘图 图3绘制画图软件方法PAD图4运行结果图4 画图软件结果显示5测试分析5.1程序运行情况: 当运行程序的时候,你可以进入界面,单击你所需要的颜色和画笔的粗细来进行作图。当你觉得你对你的画不满意的时候,你可以选择白色来清除你的画面。 6 程序清单:package kasa;import java.awt.BasicStroke;import java.awt.BorderLayout;import java.awt.Button;import java.awt.Color;import java.awt.Cursor;import java.awt.Dimension;import java.awt.Frame;import java.awt.Graphics;import java.awt.Graphics2D;import java.awt.GridLayout;import java.awt.Label;import java.awt.Panel;import java.awt.RenderingHints;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.MouseAdapter;import java.awt.event.MouseEvent;import java.awt.event.MouseListener;import java.awt.event.MouseMotionListener;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;import java.awt.image.BufferedImage;/* *JAVA版画图小工具 * * * author kasa * */public class DrawPane extends Frame / 画板private Palette palette = null; / 显示当前颜色的面板private Panel nonceColor = null; / 画笔粗细private Label drawWidth = null; / 画笔端点的装饰private Label drawCap = null; / 选取颜色按钮的监听事件类private ButtonColorAction buttonColorAction = null;/ 鼠标进入按钮后光标样式的监听事件类private ButtonCursor buttonCursor = null; / 画笔样式的监听事件private ButtonStrokeAction buttonStrokeAction = null;/* * 构造方法 * */public DrawPane() / 设置标题栏文字super(JAVA版画图小工具); / 构造一个画图板palette = new Palette();Panel pane = new Panel(new GridLayout(2, 1); / 画笔颜色选择器Panel paneColor = new Panel(new GridLayout(1, 13); / 12 个颜色选择按钮Button buttonColor = new Button12;Color color = Color.black, Color.blue, Color.cyan, Color.darkGray,Color.gray, Color.green, Color.magenta, Color.orange,Color.pink, Color.red, Color.white, Color.yellow ; / 显示当前颜色的面板nonceColor = new Panel();nonceColor.setBackground(Color.black);paneColor.add(nonceColor);buttonColorAction = new ButtonColorAction();buttonCursor = new ButtonCursor();for (int i = 0; i buttonColor.length; i+) buttonColori = new Button();buttonColori.setBackground(colori);buttonColori.addActionListener(buttonColorAction);buttonColori.addMouseListener(buttonCursor);paneColor.add(buttonColori);pane.add(paneColor); / 画笔颜色选择器Panel paneStroke = new Panel(new GridLayout(1, 13); / 控制画笔样式buttonStrokeAction = new ButtonStrokeAction();Button buttonStroke = new Button11;buttonStroke0 = new Button(1);buttonStroke1 = new Button(3);buttonStroke2 = new Button(5);buttonStroke3 = new Button(7);buttonStroke4 = new Button(9);buttonStroke5 = new Button(11);buttonStroke6 = new Button(13);buttonStroke7 = new Button(15);buttonStroke8 = new Button(17);buttonStroke9 = new Button();buttonStroke10 = new Button();drawWidth = new Label(粗细, Label.CENTER);drawCap = new Label(, Label.CENTER);drawWidth.setBackground(Color.lightGray);drawCap.setBackground(Color.lightGray);paneStroke.add(drawWidth);for (int i = 0; i buttonStroke.length; i+) paneStroke.add(buttonStrokei);buttonStrokei.addMouseListener(buttonCursor);buttonStrokei.addActionListener(buttonStrokeAction);if (i = 8) buttonStrokei.setName(width); else buttonStrokei.setName(cap);if (i = 8) paneStroke.add(drawCap);pane.add(paneStroke); / 将画笔颜色选择器添加到窗体中this.add(pane, BorderLayout.NORTH); / 将画图板添加到窗体中this.add(palette); / 添加窗口监听,点击关闭按钮时退出程序this.addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent e) System.exit(0);); / 设置窗口的大小this.setSize(new Dimension(400, 430); / 设置窗口位置,处于屏幕正中央this.setLocationRelativeTo(null); / 显示窗口this.setVisible(true);/* * 程序入口 * * param args * 字符串数组参数 */public static void main(String args) new DrawPane();/* * 选取颜色按钮的监听事件类 * author kasa * */class ButtonColorAction implements ActionListener public void actionPerformed(ActionEvent e) Color color_temp = (Button) e.getSource().getBackground();nonceColor.setBackground(color_temp);palette.setColor(color_temp);/* * 鼠标进入按钮变换光标样式监听事件类 * author kasa * */class ButtonCursor extends MouseAdapter public void mouseEntered(MouseEvent e) (Button) e.getSource().setCursor(new Cursor(Cursor.HAND_CURSOR);public void mouseExited(MouseEvent e) (Button) e.getSource().setCursor(new Cursor(Cursor.DEFAULT_CURSOR);/* * 设置画笔的监听事件类 * author kasa * */class ButtonStrokeAction implements ActionListener public void actionPerformed(ActionEvent e) Button button_temp = (Button) e.getSource();String name = button_temp.getName();if (name.equalsIgnoreCase(width) drawWidth.setText(button_temp.getLabel();palette.setStroke(Float.parseFloat(button_temp.getLabel(); else if (name.equalsIgnoreCase(cap) drawCap.setText(button_temp.getLabel();if (button_temp.getLabel().equals() palette.setStroke(BasicStroke.CAP_SQUARE); else if (button_temp.getLabel().equals() palette.setStroke(BasicStroke.CAP_ROUND);/* * 画板类 * * author kasa * */class Palette extends Panel implements MouseListener, MouseMotionListener / 鼠标/ X/ 坐标的位置private int mouseX = 0; / 上一次 X 坐标位置private int oldMouseX = 0; / 鼠标 Y 坐标的位置private int mouseY = 0; / 上一次 Y 坐标位置private int oldMouseY = 0; / 画图颜色private Color color = null; / 画笔样式private BasicStroke stroke = null; / 缓存图形private BufferedImage image = null;/* * 构造一个画板类 * */public Palette() this.addMouseListener(this);this.addMouseMotionListener(this); / 默认黑色画笔color = new Color(0, 0, 0); / 设置默认画笔样式stroke = new BasicStroke(3.0f, BasicStroke.CAP_ROUND,BasicStroke.JOIN_ROUND); / 建立 1280 * 1024 的 RGB 缓存图象image = new BufferedImage(1280, 1024, BufferedImage.TYPE_INT_RGB); / 设置颜色image.getGraphics().setColor(Color.white); / 画背景image.getGraphics().fillRect(0, 0, 1280, 1024);/* * 重写 paint 绘图方法 */public void paint(Graphics g) super.paint(g); / 转换为 Graphics2DGraphics2D g2d = (Graphics2D) g; / 获取缓存图形 Graphics2DGraphics2D bg = image.createGraphics(); / 图形抗锯齿bg.setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_ON); / 设置绘图颜色bg.setColor(color); / 设置画笔样式bg.setStroke(stroke); / 画线,从上一个点到新的点bg.drawLine(oldMouseX, oldMouseY, mouseX, mouseY); / 将缓存中的图形画到画板上g2d.drawImage(image, 0, 0, this);/* * 重写 update 方法 */public void update(Graphics g) this.paint(g);/* * return stroke */public BasicStroke getStroke() return stroke;/* * param stroke 要设置的 stroke */public void setStroke(BasicStroke stroke) this.stroke = stroke;/* * 设置画笔粗细 * param width */public void setStroke(float width) this.stroke = new BasicStroke(width, stroke.getEndCap(),stroke.getLineJoin();/* * 设置画笔端点的装饰 * param cap 参考 java.awt.BasicStroke 类静态字段 */public void setStroke(int cap) this.stroke = new BasicStroke(stroke.getLineWidth(), cap,stroke.getLineJoin();/* * return color */public Color getColor() return color;/* * param color 要设置的 color */public void setColor(Color color) this.color = color;public void mouseClicked(MouseEvent mouseEvent) /* * 鼠标按下 */public void mousePressed(MouseEvent mouseEvent) this.oldMouseX = this.mouseX = mouseEvent.getX();this.oldMouseY = this.mouseY = mouseEvent.getY();repaint();public void mouseReleased(MouseEvent mouseEvent) /* * 鼠标进入棋盘 */public void mouseEntered(MouseEvent mouseEvent) this.setCursor(new Cursor(Cursor.CROSSHAIR_CURSOR);/* * 鼠标退出棋盘 */public void mouseExited(MouseEvent mouseEvent) this.setCursor(new Cursor(Cursor.DEFAULT_CURSOR);/* * 鼠标拖动 */public void mouseDragged(MouseEvent mouseEvent) this.oldMouseX = this.mouseX;this.oldMouseY = this.mouseY;this.mouseX = mouseEvent.getX();this.mouseY = mouseEvent.getY();repaint();public void mouseMoved(MouseEvent mouseEven
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论