目录第一章选题简介 (3)第二章需求分析 (4)1.系统要实现的目标分析 (4)2.对输入输出数据及流程的分析 (4)3.开发环境及运行环境分析 (5)第三章系统设计 (6)1. 系统功能模块设计 (6)2. 类设计 (7)3. 界面设计 (8)第四章测试 (10)1.测试用例及结果 (10)2.程序功能的评价 (11)第五章总结 (12)1.遇到的问题及解决的方法 (12)2.开发体会及自评成绩 (12)参考文献 (13)第一章选题简介随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。
JAVA是一门很优秀的编程语言,具有面向对象、与平台无关、安全、稳定和多线程等特点,是目前软件设计中极为健壮的编程语言。
JAVA不仅可以用来开发大型的应用程序。
而且特别适合Internet的应用开发。
JAVA确实具备“一次写成,处处运行”的特点,JAVA以成为网络时代最重要的编程语言之一。
本次课程设计主要是用JAVA实现画笔系统,其系统主要完成以下功能:设计一个画图程序,能利用它实现用三种类型的线条在画板上任意绘画、书写的功能,该画图程序还需具有橡皮擦功能以及清空整个画面的功能。
第二章需求分析1.系统要实现的目标分析●这个画图程序,最基本的功能是,作为一个画笔,能利用它实现用三种类型的线条在画板上任意绘画、书写的功能;●这个画图程序,还需具备橡皮擦的功能,利用这个橡皮擦能够擦除画板上的图案;●这个画图程序,还应该具备能够清除整个画板已绘制图画的功能。
2.对输入输出数据及流程的分析3.开发环境及运行环境分析Jcreator是Xinox Software公司开发的一个用于Java程序设计的集成开发环境(IDE),具有编辑、调试、运行Java程序的功能。
当前最新版本是Jcreator5.00,它又分为LE和Pro版本。
LE版本功能上受到一些限制,是免费版本。
Pro版本功能最全,但这个版本是一个共享软件。
这个软件比较小巧,对硬件要求不是很高,完全用C++写的,速度快、效率高。
具有语法着色、代码自动完成、代码参数提示、工程向导、类向导等功能。
第一次启动时提示设置JavaJDK主目录及JDKJavaDoc目录,软件自动设置好类路径、编译器及解释器路径,还可以在帮助菜单中使用JDKHelp。
第三章系统设计1. 系统功能模块设计(1)设置画笔的粗细,有三种类型——细线,较粗,粗线final JButton button = new JButton();button.addActionListener(new ActionListener() {public void actionPerformed(final ActionEvent arg0) {// 声明画笔的属性,粗细为1像素BasicStroke bs = new BasicStroke(1, BasicStroke.CAP_BUTT,BasicStroke.JOIN_MITER);g.setStroke(bs); // 设置绘图画笔}});button.setText(" 细线");toolBar.add(button);final JButton button_1 = new JButton();button_1.addActionListener(new ActionListener() {public void actionPerformed(final ActionEvent arg0) {// 声明画笔的属性,粗细为2像素BasicStroke bs = new BasicStroke(2, BasicStroke.CAP_BUTT,BasicStroke.JOIN_MITER);g.setStroke(bs); // 设置绘图画笔}});button_1.setText(" 较粗");toolBar.add(button_1);final JButton button_2 = new JButton();button_2.addActionListener(new ActionListener() {public void actionPerformed(final ActionEvent arg0) {// 声明画笔的属性,粗细为4像素BasicStroke bs = new BasicStroke(4, BasicStroke.CAP_BUTT,BasicStroke.JOIN_MITER);g.setStroke(bs); // 设置绘图画笔}});button_2.setText(" 粗线");toolBar.add(button_2);(2)清空画板final JButton button_3 = new JButton();button_3.addActionListener(new ActionListener() {public void actionPerformed(final ActionEvent arg0) {g.setColor(backgroundColor); // 恢复默认背景色g.fillRect(0, 0, 570, 390); // 用背景色填充整个画板g.setColor(foreColor); // 恢复画笔颜色canvas.repaint(); // 更新画板}});button_3.setText(" 清除");toolBar.add(button_3);(3)选择绘画或者橡皮模式final JButton button_4 = new JButton();button_4.addActionListener(new ActionListener() {public void actionPerformed(final ActionEvent arg0) {if (button_4.getText().equals(" 橡皮")) { // 单击工具栏上的橡皮按钮,使用橡皮rubber = true; // 设置橡皮标识为truebutton_4.setText(" 绘画"); // 改变按钮上显示的文本为绘画} else { // 单击工具栏上的画图按钮,使用画笔rubber = false; // 设置橡皮标识为falsebutton_4.setText(" 橡皮"); // 改变按钮上显示的文本为橡皮// 设置画笔颜色}}});button_4.setText(" 橡皮");toolBar.add(button_4);(4)退出系统final JButton button_6 = new JButton();button_6.addActionListener(new ActionListener() {public void actionPerformed(final ActionEvent arg0) {System.exit(0); // 退出应用程序}});button_6.setText(" 退出");toolBar.add(button_6);2. 类设计DrawPictureCanvas类继承Canvas类,用于显示绘制的内容public class DrawPictureCanvas extends Canvas {private Image image = null; // 定义Image对象的引用public DrawPictureCanvas() {super();}public void setImage(Image image) {this.image = image; // 为成员变量赋值}/** 重写paint()方法,在画板上绘制图像*/public void paint(Graphics g) {g.drawImage(image, 0, 0, null); // 在画板上绘制图像}DrawPictureFrame类继承JFrame类,用于显示完成绘图的各种操作public class DrawPictureFrame extends JFrame {// 创建图像对象BufferedImage image = new BufferedImage(570, 390,BufferedImage.TYPE_INT_BGR);Graphics gs = image.getGraphics(); // 获得图像的绘图对象Graphics2D g = (Graphics2D) gs; // 将绘图上下文对象转换为Graphics2D类型DrawPictureCanvas canvas = new DrawPictureCanvas(); // 创建画板对象Color foreColor = Color.BLACK; // 定义画笔颜色Color backgroundColor = Color.WHITE; // 定义背景色boolean rubber = false; // 橡皮标识变量int x = -1; // 上一次鼠标绘制点的横坐标int y = -1; // 上一次鼠标绘制点的纵坐标private JMenuItem newItemMenuItem_6 = null;3. 界面设计public class DrawPictureCanvas extends Canvas {private Image image = null; // 定义Image对象的引用public DrawPictureCanvas() {super();}public void setImage(Image image) {this.image = image; // 为成员变量赋值}/** 重写paint()方法,在画板上绘制图像*/public void paint(Graphics g) {g.drawImage(image, 0, 0, null); // 在画板上绘制图像}/** 重写update()方法,这样可以解决屏幕闪耀的问题*/public void update(Graphics g) {paint(g); // 调用paint方法}}public DrawPictureFrame() {super();setResizable(false);setTitle("画图程序");setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);setBounds(100, 80, 574, 397);g.setColor(backgroundColor); // 用背景色设置绘图上下文对象的颜色g.fillRect(0, 0, 570, 390); // 用背景色填充整个画布g.setColor(foreColor); // 用前景色设置绘图上下文对象的颜色canvas.setImage(image); // 设置画布的图像getContentPane().add(canvas); // 将画布添加到窗体容器默认布局的中部位置第四章测试1.测试用例及结果(1)界面(2)三种类型的线条绘图(3)橡皮擦除2.程序功能的评价预期的绘图,橡皮,清除三大功能目标基本达成,但是作为绘图软件,功能稍有欠缺,如能加上绘画基本形状,修改背景色,画笔颜色就更加健全了。