java实现简易画图程序

上传人:第*** 文档编号:34232367 上传时间:2018-02-22 格式:DOC 页数:35 大小:759.44KB
返回 下载 相关 举报
java实现简易画图程序_第1页
第1页 / 共35页
java实现简易画图程序_第2页
第2页 / 共35页
java实现简易画图程序_第3页
第3页 / 共35页
java实现简易画图程序_第4页
第4页 / 共35页
java实现简易画图程序_第5页
第5页 / 共35页
点击查看更多>>
资源描述

《java实现简易画图程序》由会员分享,可在线阅读,更多相关《java实现简易画图程序(35页珍藏版)》请在金锄头文库上搜索。

1、 Java 语言课程期末作业题 目 第 1 题:简易绘图程序 学 院 计算机学院 专 业 软件工程 班 别 学 号 姓 名 2015 年 12 月 6 日翁佳盛Java 语言课程期末作业2一、课程题目 绘图应用程序。利用学过的 GUI 方法实现一个较为完整的绘图应用程序。用户可以选择要画的图形(如线,椭圆,圆,矩形,弧,圆角矩形,多边形,折线等等) ,选择画笔颜色和画笔粗度,用鼠标单击和拖拽等动作绘图,并能将绘图结果保存为 jpg 和 bmp 格式。二、题目分析与设计 1. 开发环境:Eclipse 4.5.0 JDK 1.8.0_452. 题目需求分析:题目要求实现一个较为完整的绘图程序,最

2、基本的要求是用户可以自由选择图形,颜色,线条粗细等属性,并用鼠标绘制图形,并将其保存为图片文件。首先,程序界面参考一般绘图软件,进行组件的布局。另外对于程序的功能实现,则将图形封装成类,通过多态实现多种不同图形的绘制,并用输入输出流保存或打开文件。除此之外根据实际操作的需要,添加一些必要或者实用的功能,如撤销操作,快捷键撤销或保存,关闭文件前弹窗提示保存等功能。(1). 菜单功能: 通过菜单栏进行:一、 文件的读取与写入;二、 使用扩展功能;三、 程序的简单偏好设置;四、 程序信息提示。(2). 绘图功能:在绘图过程通过工具栏进行形状、颜色等图形选择,在文本输入及扩展功能状态下会新增子工具栏,

3、在子工具栏中对于字体或其它形状进行设置。然后在画板区域通过鼠标的点击与拖拽绘制图形。绘图过程应有保存与撤销功能。绘图范围为画板的显示的区域。翁佳盛Java 语言课程期末作业3(3). 其它功能:如快捷键 Ctrl+z 为撤销,Ctrl+s 为保存。鼠标停在工具栏按钮上时提示功能。文件修改后窗口标题带上星号作为标记。第一次编辑的文件或修改过的文件关闭前自动提示保存。等等。(4). 功能架构图:3. 界面设计:本程序使用 Swing 图形编程。菜单:类似于常见程序,添加子菜单:File,Paint, Setting, Help。在File 菜单下有 new,open , save, exit 等菜

4、单项。 Paint 下主要是 moreshape 调出更多图形选择,Setting 下的 background 菜单项可更改画板背景颜色。Help 下可查看程序及作者的信息。主界面:采用默认的 BordeLayout 布局,添加工具栏于 NORTH 区,画板于CENTER 区。打开程序时默认全屏。工具栏:由于有多个工具栏,所以使用 JTabbedPane 做出多标签。主工具栏一直存在,文本工具栏和扩展工具栏每次最多只有一个出现,若打开时另一个工具栏已存在,则会先将已存在的工具栏关闭。主工具栏与文本工具栏由于有复选框这一组件,添加后会自动填满多余空间,所以使用 FlowLayout 布局。扩展工

5、具栏使用默认布局。主工具栏添加常用图形按钮、图形属性按钮、撤销按钮。文本工具栏添加简易绘图文件操作 绘画图形 补充功能打开文件新建文件保存文件撤销擦除图形绘制背景颜色更多图形作者信息翁佳盛Java 语言课程期末作业4字体属性按钮,撤销按钮及退出文本工具栏按钮。扩展工具栏添加多边形按钮及退出扩展工具栏按钮。每个工具栏的按钮各自存放在一个 ArrayList 中。画板:画板类从 JPanel 继承,重写 paintComponent 方法,使得画板每次刷新时可将之前的所有图形重新画出来。4. 逻辑实现:画图部分:程序将一个图形的所有信息封装为一个 Drawings 类,而具体的图形则从 Drawi

6、ngs 类继承,并实现自己的 draw()方法用以画出图形。因此,可以创建一个 Drawings 类型的数组,用一个索引对数组进行操作,用户每画一个图形,就将该图形的所有信息存放到数组中索引指向的位置,索引向后移动一位。重写后的画板的 drawComponent 方法就会自动将数组中从 0 位置到索引位置的所有图形在画板上绘制出来。而撤销操作只需要将索引向前移动一位并重画即可。文件读写:保存文件时,先创建一个 BufferedImage 对象,然后将画板内容画到该对象上,并将该对象写入到指定文件中。打开文件时,则从指定文件中获得一个 BufferedImage 对象,将其作为一个从 Drawi

7、ngs 类继承的图形,在画板上画出来。三、测试分析1. 测试数据:(1). 新建文件,画图,保存为 jpg 文件;(2). 新建文件,画图,保存为 bmp 文件;(3). 打开(1)(2)中保存的文件;(4). 打开一个 txt 文件,弹窗报错;2. 测试情况:测试结果与预计结果一致;翁佳盛Java 语言课程期末作业5翁佳盛Java 语言课程期末作业6翁佳盛Java 语言课程期末作业7翁佳盛Java 语言课程期末作业8附录:源代码+图标import java.awt.AWTEvent;import java.awt.BasicStroke;import java.awt.BorderLayou

8、t;import java.awt.Color;import java.awt.Cursor;import java.awt.Dimension;import java.awt.FlowLayout;import java.awt.Font;import java.awt.Graphics;import java.awt.Graphics2D;import java.awt.Toolkit;import java.awt.event.AWTEventListener;import java.awt.event.ActionEvent;import java.awt.event.ActionLi

9、stener;import java.awt.event.ItemEvent;import java.awt.event.ItemListener;import java.awt.event.KeyEvent;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.aw

10、t.image.BufferedImage;import java.io.File;import java.io.IOException;import java.io.Serializable;import java.util.ArrayList;import javax.imageio.ImageIO;import javax.swing.ImageIcon;import javax.swing.JButton;import javax.swing.JColorChooser;import javax.swing.JComboBox;import javax.swing.JComponent

11、;import javax.swing.JFileChooser;import javax.swing.JFrame;import javax.swing.JMenu;import javax.swing.JMenuBar;import javax.swing.JMenuItem;翁佳盛Java 语言课程期末作业9import javax.swing.JOptionPane;import javax.swing.JPanel;import javax.swing.JTabbedPane;import javax.swing.JToggleButton;import javax.swing.JT

12、oolBar;import javax.swing.filechooser.FileFilter;public class MiniDrawPad extends JFrame implements MouseListener, MouseMotionListener /基本属性定义MainMenu mainMenu; /主菜单JTabbedPane tab; /多工具栏ToolBar toolBar; /主工具栏ArrayList button; /主工具栏的一排按钮String names = /主工具栏按钮名pencil, line, oval, rect, orect, tria, e

13、raser, word, color, full, undo;JComboBox strokeitem; /线条粗细选择框DrawPanel board; /画图面板File fileName = null; /打开保存的文件名String oldName; /原窗口名标记Drawings pic = new Drawings5000; /图形单元存储数组int index=0; /当前图形存储位置int shape=0; /形状标记int stroke = 1; /线条粗细标记int lengthCount; /铅笔或橡皮擦图形的存储长度int bold, italic; /粗体与斜体int

14、 size=3; /文字大小String font; /文字字体Color color = Color.black; /颜色标记Color anticolor = Color.white;boolean fill = false; /填充标记int tag=0; /标记文件第一次打开/构造主面板public MiniDrawPad(String s) super(s);oldName = s;tab = new JTabbedPane();board = new DrawPanel();mainMenu = new MainMenu();toolBar = new ToolBar();翁佳盛J

15、ava 语言课程期末作业10board.setPreferredSize(new Dimension(Toolkit.getDefaultToolkit().getScreenSize();board.addMouseListener(this);board.addMouseMotionListener(this);this.setJMenuBar(mainMenu);tab.add(主工具栏 , toolBar);this.add(tab, BorderLayout.NORTH);this.getContentPane().add(board, BorderLayout.CENTER);this.setExtendedState(JFrame.MAXIMIZED_BOTH);this.setBounds(350, 35, 555, 655);this.setVisible(true);initItem(); /初始化当前图形单元this.addWindowListener(new WindowAdapter() Overridepublic void windowClosing(WindowEvent e) / TODO Auto-generated method stubif(getTitle().equals(oldName

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 解决方案

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号