Java画图软件设计报告
java课程设计报告++画笔程序
目录一、前言 (2)二、功能简介 (3)三、概要设计 (4)四、详细设计 (5)五、测试数据及运行结果 (7)六、源程序 (9)七、总结 (19)八、参考文献 (20)一、前言Java不依赖平台的特点使它受到广泛的关注,Java已成为网络时代最重要的语言之一。
目前,Java语言不仅是一门被广泛使用的编程语言,而且已成为软件设计开发者应当掌握的一门基础语言。
因为很多新的技术领域都涉及到Java语言,国内外许多大学已将Java语言列入本科教学计划,而IT行业对Java人才的需求也在不断的增长,因此,掌握Java已经成为共识。
Java是一门说简单也不简单,说难也不难的课程。
所以,我们在学习的过程中要根据自己的具体情况,合理安排编程训练时间,相信编程能力会在不知不觉中得到提高。
二、功能简介1)设计一个画图程序,能够实现画笔、画直线、画圆形、画矩形的功能,并且在绘图过程中能够修改该画笔的大小以及颜色。
该画图程序还需具有橡皮擦功能以及清空整个画面的功能。
2)此程序要实现的功能如下:1、这个画图程序,最基本的功能是,作为一个画笔,能利用它实现在屏幕上任意绘画、书写的功能;2、利用这个画图程序,通过选择画直线、画圆形、画矩形等功能选项并且在屏幕上拖动鼠标操作能实现画出相应图形的功能;3、这个画图程序,还需具备橡皮擦的功能,利用这个橡皮擦能够擦除屏幕上的图案,并且此橡皮擦也应该能够改变大小;4、这个画图程序,还应该做到能够改变画笔颜色的功能;5、这个画图程序,还应该具备能够清除整个屏幕已绘制图画的功能。
三、概要设计1、此程序为实现这些功能模块,必须首先定义一个工具面板,将这些画笔、画直线、画圆形、画矩形、画笔颜色、画笔大小、橡皮等功能组件放入这个工具面板中。
2、此程序为实现利用鼠标做画笔的功能,必会产生鼠标事件MouseEvent。
因此,为实现鼠标画图的功能,必须用到鼠标触发事件,故在此程序中,必须实现“委托事件模型”,用到事件源、事件对象以及监听者对象。
南邮Java实验报告1-综合图形界面程序设计
南邮Java实验报告1-综合图形界面程序设计英文回答:Firstly, I would like to express my sincere gratitudeto my instructor for providing me with the opportunity to work on this Java programming project, which focuses on the design of a comprehensive graphical user interface (GUI). Throughout this project, I have gained valuable experiencein developing a user-friendly and visually appealing application that meets the specified requirements.To begin with, I started by gathering the necessary requirements and understanding the problem statement. Ithen proceeded to design the GUI layout and create the corresponding Java classes and methods. I utilized various Java Swing components, such as buttons, text fields, labels, and panels, to construct a user-friendly interface. Additionally, I implemented event handling mechanisms to respond to user interactions and perform appropriateactions.During the development process, I encountered several challenges. One of the challenges was ensuring that the GUI was responsive and user-friendly. I addressed this by carefully designing the layout and implementing efficient event handling mechanisms. Another challenge was handling complex user interactions and data validation. I overcame this by using appropriate data structures and algorithms to validate user input and perform the required operations.To further enhance the user experience, I incorporated custom graphics and animations. I created custom icons and images to enhance the visual appeal of the application. I also implemented animations to provide visual feedback to users. By incorporating these elements, I aimed to create an engaging and immersive experience for the users.In addition to the technical aspects of the project, I also focused on adhering to coding conventions and best practices. I used proper naming conventions, indentation, and commenting throughout my code. This ensured the codewas readable, maintainable, and extensible.Overall, working on this Java GUI programming project has been a rewarding experience. I have learned a great deal about GUI design, event handling, and the implementation of custom graphics and animations. I am confident that the knowledge and skills I have acquired through this project will be invaluable in my future endeavors as a software developer.中文回答:首先,我谨向我的导师在这次Java编程项目中提供给我的机会表示由衷的感谢。
绘图JAVA程序报告(含程序)
本次编程工具为 UltraEdit。
3 系统流程
开始
曲线 按钮
直线 按钮
画圆 按钮
矩形 按钮
粗线 按钮
填充 颜色
清除
画笔 粗细
f=1
f=2
f=3
f=4
f=5
填充
Y
N
fill=true
fill=false
size 改变
改变颜色
Y
N
输入颜 色
f=1
f=2
f=3
通过 JCheckBox 创建一个按钮,利用按钮监听器决定是否要描绘填 充图形,如果是则将实现赋值 fill=true,否则 fill=false,然后通过 布尔值判断在描绘图形时是 draw 还是 fill,如果布尔值是 ture 时则实 现了图形的填充。 2.2.4 画笔的粗细及画笔的颜色变更
画笔的粗细主要是通过不断地重画填充圆来实现,通过鼠标的拖拽 不断地在画板上进行重画;而粗细则由创建的 JSlider 来调节圆的半径, 如果圆的半径越大则所绘出的曲线越粗,反则越细;画笔的颜色变更主 要通过创建的 JButton 按钮,利用按钮监听器,当按下了按钮,则实现 c=JColorChooser.showDialog(right,"choose",c)语句,从而把初始的 画笔颜色(黑色)改变。 2.2.5 实现鼠标单击和鼠标拖拽进行绘图
在实现绘画的功能,主要通过创建 ButtonGroup 从而把所有的 JRadioButton 都添加进去,从而达到在描绘图形时多选一的选择功能; 利用按钮监听器,利用 Object source=event.getSource()语句当 source==op1 时进行曲线绘画,在实现曲线绘画的功能时,主要利用了 鼠标的点击和鼠标的拖拽,通过鼠标的点击来扑捉第一个坐标点,然后 利用鼠标的拖拽来不断变换第一个点的坐标(利用 sx=x 和 sy=y 语句), 从而将所有点都连接起来,最终实现了在画板上描绘曲线的功能;当 source==op2 时进行直线绘画,在实现直线绘画的功能时,主要利用了 鼠标的点击,鼠标的释放和鼠标的拖拽,通过鼠标的点击来扑捉直线的 第一个坐标点,然后利用鼠标的拖拽选择直线的另一个点,最终通过鼠 标的释放在画板上描绘出直线来;当 source==op3 时进行圆和椭圆绘画, 在实现圆和椭圆绘画的功能时,主要利用了鼠标的点击,鼠标的释放和 鼠标的拖拽,通过鼠标的点击来扑捉圆和椭圆的一个坐标点,然后利用 鼠标的拖拽选择圆和椭圆的大小,最终通过鼠标的释放在画板上描绘出 圆和椭圆来;当 source==op4 时进行矩形绘画,在实现矩形绘画的功能 时,主要利用了鼠标的点击,鼠标的释放和鼠标的拖拽,通过鼠标的点 击来扑捉矩形的一个坐标点,然后利用鼠标的拖拽选择矩形的大小,最 终通过鼠标的释放在画板上描绘出矩形来。 2.2.3 填充功能(其中包括圆的填充,椭圆圆的填充,矩形圆的填充)
Java画图软件设计报告
佛山科学技术学院《可视化编程技术》课程设计报告画图软件设计学生姓名:***学号:**********年级专业:11级教育技术学2班指导老师:***学院:教育科学学院广东★佛山提交日期:2013年6月目录1. 前言 (2)2.概要设计 (3)2.1 开发环境 (3)2.2 画图软件功能 (3)2.3 界面设计 (3)2.4 类的框架结构图 (4)3. 详细设计 (4)3.1 使用的JAVA类的说明 (4)3.2 类的主要方法 (5)3.2.1 颜色选择器 (5)3.2.2 控制画笔样式 (5)3.2.3 选取颜色按钮的监听件类 (6)3.2.4 设计总体认识 (6)3.2.5 程序流程图 (7)4. 运行结果 (7)5. 测试分析 (8)5.1 程序运行情况 (8)6. 源程序 (8)参考文献 (14)设计总结 (14)摘要:该程序是一个图形界面的简单的java画图软件,具有良好的界面,使用人员能快捷简单地进行操作。
该画图软件操作较为简单,只需要一直按着左键就能根据你鼠标移动的方面,画出你想要的图案。
你也可以选择你自己想到的颜色和画笔的粗细。
而且可以显示你当前的画笔的状态。
界面为灰白对称。
是一个非常简单的作图工具,让人能轻松上手。
关键字:java,画图类,方法,事件1 前言随着科学技术的不断发展,计算机已经成为我们工作学习和生活中不可缺少的工具。
文本编辑器是个人计算机最司空见惯的应用程序了,在学习了Java语言之后,我决定使用Java语言编写一个简单的画图工具,可以实现简单的画图作图功能,满足日常基本的工作学习和娱乐需要。
Java是由Sun公司开发的新一代纯面向对象的网络编程语言。
其目标是建立一种在任意种机器、任一种操作系统的网络环境中运行的软件,实行所谓的“程序写一次,到处运行”的目标。
正因为如此,Java已成为当今Internet上最流行、最受欢迎的一种程序开发语言。
Java开发小组把Java按特性分为基本版、移动版、企业版,每个版本有一个软件开发包。
南邮Java实验报告1-综合图形界面程序设计
南邮Java实验报告1-综合图形界面程序设
计
自查报告。
在本次实验中,我设计了一个综合图形界面程序,实现了基本的图形绘制、文本输入和按钮操作功能。
在完成实验过程中,我对自己的工作进行了自查,总结如下:
1. 程序功能完整性,在实验中,我确保了程序能够实现基本的图形绘制、文本输入和按钮操作功能,并且能够正确响应用户的操作。
我对每个功能模块进行了测试,确保程序的功能完整性。
2. 界面美观度,在设计界面时,我注重了界面的美观度和用户体验,保证了界面的布局合理,颜色搭配和图形元素的大小比例协调,使得用户操作起来更加舒适。
3. 代码规范性,在编写代码时,我遵循了Java编程规范,命名规范和代码风格规范,确保了代码的可读性和可维护性。
我对代码进行了注释,方便他人阅读和理解。
4. 错误处理和异常处理,在程序中,我对用户的输入和操作进
行了错误处理和异常处理,保证了程序的稳定性和健壮性。
当用户
输入错误或者操作不当时,程序能够给出相应的提示或者处理方式。
5. 性能优化,在编写程序时,我尽量避免了冗余的代码和不必
要的计算,保证了程序的性能优化。
我对程序进行了性能测试,确
保程序能够在各种情况下都能够正常运行。
通过这次自查,我发现了一些不足之处,比如界面美观度还有
待提高,代码规范性需要进一步加强等。
在今后的学习和实践中,
我会继续努力改进自己的不足之处,提高自己的编程能力和程序设
计水平。
同时,我也会继续关注Java编程技术的发展,不断学习和
掌握新的知识和技能,为自己的成长和发展打下更加坚实的基础。
JAVA绘图实验报告
南京工程学院 实 验 报 告 课程名称 java基础 实验项目名称 图形用户界面设计 实验学生班级 实验学生姓名 学 号 同组学生姓名 无 实验时间 2012年11月 实验地点 实验成绩评定 指导教师签字 年 月 日一、实验目的和要求1.目的:掌握java awt及swing组件的使用方法,包括窗口、框架、对话框、布局方式、面板、文本编辑器、按钮、组合框等,合理利用委托事件处理模型,掌握不同组件,不同事件的事件处理方法,设计出能够响应事件的java图形用户界面。
2.要求:设计图形用户界面,事件处理,异常处理并弹出对话框,提示重新输入信息。
二、实验题目 验证哥德巴赫猜想,添加图形用户界面三、实验方法与步骤(需求分析、算法设计思路、流程图等)1.添加图形用户界面 import java.awt.*; import java.awt.event.*; import javax.swing.*; public class gdbh extends frame implements actionlistener //窗口框架响应单击事件,利用awt组件设计框架 {private button button; //按钮 private textfield text1; //文本行 private textarea text2; //文本区 public gdbh() {super(验证哥德巴赫猜想); //设置框架窗口标题 this.setbounds(450, 200, 350, 400); //设置框架的位置和尺寸 this.setresizable(false); // 设置框架大小不可改变 this.setbackground(color.lightgray); //设置窗口背景颜色 this.setlayout(new flowlayout()); // 默认窗口流布局 中对齐 this.add(new label(输入一个整数)); text1=new textfield(,20); this.add(text1); button=new button(验证哥德巴赫猜想); this.add(button); button.addactionlistener(this); //为按钮注册单击事件监听器,委托当前对象处理事件 this.setlayout(new flowlayout()); //默认中对齐 text2=new textarea(20,25); text2.seteditable(false); this.add(text2); this.setvisible(true); //设置组件可见 this.addwindowlistener(new winclose()); // 为框架注册窗口事件监听器,委托winclose对象处理事件 }2.实现单击事件和窗口事件监听器接口 public void actionperformed(actionevent e) //单击事件处理方法,实现actionlistener接口 {string str =text1.gettext(); //获得文本行的字符串try {long num = long.parselong(str); // 将字符串转化成长整形text2.settext(yz(num)); }catch(numberformatexception n) {joptionpane.showmessagedialog(this, \+str+\字符串不能转换成整数,请重新输入!!); return; }}class winclose implements windowlistener //实现窗口事件监听器接口 {public void windowclosing(windowevent e) // 窗口关闭事件处理方法 {system.exit(0); //程序运行结束 } public void windowopened(windowevent e) {} public void windowclosed(windowevent e) {} public void windowiconified(windowevent e) {} public void windowdeiconified(windowevent e) {} public void windowactivated(windowevent e) {} public void windowdeactivated(windowevent e) {} }3.异常处理 若文本行中的字符串不能转化成长整形,将弹出对话框“字符串不能转换成整数,请重新输入!!;另外如果所输入的整数为小于等于2或大于2小于等于5 也会弹出一个对话框“输入错误!必须是大于2的偶数或大于5的奇数!!”(该窗口代码设置在yz()函数中)。
java课程设计报告 画图
淮海工学院计算机工程学院
课程设计报告
设计名称:面向对象课程设计
选题名称:图片浏览器
姓名:学号:
专业班级:网络工程
系(院):计算机工程学院
设计时间:2012.6.11~2012.6.22
设计地点:实验室、教室
4.课程设计成果
①主界面
②在画布中画图
③清除图像,提示对话框
④从文件中打开图像
⑤可多选
⑥显示打开的图像
⑦当下一张不存在时,提示用户
⑧当上一张不存在时,提示用户
⑨放大图片
⑩缩小图片
旋转图片的界面
5.课程设计心得
参考文献:
[1]耿祥义,张跃平.Java 2实用教程(第三版).北京:清华大学出版社,2008.
[2]耿祥义.Java课程设计.北京:清华大学出版社,2009.
[3]施珺,纪兆辉.Java语言实验与课程设计指导.南京:南京大学出版社,2010.
[4]java高手真经作者:刘中兵Java研究室出版社:电子工业出版社
[5]java2入门经典作者:(美)霍顿(Horton I.)著,潘晓雷等译出版社:机械工业出版社。
JAVA设计绘图软件(附源代码)
目录第一章选题简介 (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版本功能上受到一些限制,是免费版本。
JAVA课程设计报告(绘制散点图)参考模板
JA V A课程设计报告设计题目:绘制散点图小组成员:1.程序功能:功能一:打开一个文本文件,读取其中的坐标数值并绘制出散点图,并同时在控制台中输出读取的坐标功能二:根据用户输入的点数,随机绘制散点图2.设计思路和框图:首先创建一个框架窗口,在其上添加菜单栏,在菜单项上增加打开文件和随机生成散点图。
在具体程序中,创建窗口的类为Diagram,在类中写入paintComponent函数,直接在容器上绘图,获取参数时用getGraphics()。
画坐标线是用drawLine(),画坐标点用drawString()。
因为小程序有两个功能,所以paintComponent()中有两个方法,一个用来绘制读取的文件中得坐标,另一个绘制Math.random()函数产生的随机数坐标,坐标数由输入对话框获得。
因为要设置一个参数来判断调用哪一个方法。
对于菜单项“打开”和“随机生成散点图”分别添加事件监听器,用JFileChooser 类来实现文件的打开功能,用文件输入流FileReader和缓冲字符输入流BufferedReader来读取文件中得内容,当点击“随机生成散点图”菜单项时用showInputDialog()函数创建输入对话框,对话框中的文本框输入用户要生成的散点数。
3.程序实现的关键点:在程序执行过程中repaint()函数的调用;调用paintComponents()函数时用getGraphics()获得参数;因为坐标线绘制时不是以容器中的零点开始,所以读取文件中的坐标值和随机生成坐标值时数值要做相应的调整以适应容器。
4.程序代码及执行结果:package scatter.update;import java.awt.*;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.io.*;import javax.swing.*;public class ScatterUpdate {public static int a;/*** @param args*/public static void main(String[] args) {// TODO Auto-generated method stubDiagram dia=new Diagram();}}class Diagram extends JFrame implements ActionListener{JMenuBar menu=new JMenuBar();JMenu file=new JMenu("文件");JMenuItem open=new JMenuItem("打开");JMenuItem rand=new JMenuItem("随机生成散点图");Container con=getContentPane();int a,c=1;String[] num;JFileChooser chooser=new JFileChooser();Diagram(){super("散点图绘制小程序V1.1");this.setBounds(500,200,400,400);setJMenuBar(menu);menu.add(file);file.add(open);file.add(rand);rand.addActionListener(this);open.addActionListener(this);this.setDefaultCloseOperation(EXIT_ON_CLOSE);this.setVisible(true);}@Overridepublic void actionPerformed(ActionEvent e) {// TODO Auto-generated method stubif(e.getSource()==rand){con.repaint();String s=JOptionPane.showInputDialog(null, "输入点数", "随机生成散点图", JOptionPane.QUESTION_MESSAGE);a=Integer.parseInt(s);c=1;paintComponents(getGraphics());}else if(e.getSource()==open){con.repaint();choice();c=0;paintComponents(getGraphics());}}public void paintComponents(Graphics g){//super.paintComponents(g);if(c==1){g.setColor(Color.DARK_GRAY);g.drawLine(30, 70, 30, 370);g.drawLine(30, 370, 330, 370);g.drawString("0", 15, 380);g.drawString("300", 325, 385);g.drawString("300", 8, 65);//Graphics g2=(Graphics)g;int x,y,b=0;while(b<a){x=(int)(Math.random()*301)+30;y=(int)(Math.random()*301)+70;g.setColor(Color.MAGENTA);g.drawString("*", x, y);b++;}}else if(c==0){//Graphics2D g2= (Graphics2D)g;g.setColor(Color.RED);g.drawLine(30, 70, 30, 370);g.drawLine(30, 370, 330, 370);g.drawString("0", 15, 380);g.drawString("300", 325, 385);g.drawString("300", 8, 65);int x,y,i=0;while(i<num.length){x=Integer.parseInt(num[i]);y=Integer.parseInt(num[i+1]);i=i+2;g.setColor(Color.BLUE);g.drawString("*", x+30, 400-y);}}}void choice(){int i=0;if(chooser.showOpenDialog(this)==JFileChooser.APPROVE_OPTION){ File file=chooser.getSelectedFile();try {FileReader fread = new FileReader(file);BufferedReader bread=new BufferedReader(fread);String line=bread.readLine();num=line.split("[,]");//line=bread.readLine();while(i<num.length){System.out.println("("+num[i]+","+num[i+1]+")");i=i+2;}} catch (FileNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}}5.本次课程设计的收获:锻炼了独自分析和解决问题的能力,增加了JA V A编程实践的经验。
JAVA课程设计(画图板软件开发和设计)
功能测试:确保所有功能正常工作 性能测试:评估系统性能,如响应时间、吞吐量等 兼容性测试:确保在不同操作系统和浏览器上正常运行 用户体验测试:评估用户界面设计、易用性等
硬件要求:CPU、内存、硬盘等 软件要求:JDK、Tomcat、数据库等 部署步骤:安装JDK、Tomcat、数据库等,配置环境变量,部署项目 运行步骤:启动Tomcat,访问项目地址,进行测试和调试
优化网络 传输:减 少网络延 迟,提高 数据传输 速度
优化数据 库访问: 减少数据 库查询次 数,提高 查询效率
优化系统 日志:减 少日志记 录,提高 系统运行 效率
优化系统 安全:加 强系统安 全防护, 提高系统 安全性能
项目成果:成功开发出画图板 软件,实现了基本的绘图功能
项目目标:开发一个画图板 软件,实现基本的绘图功能
数据库索引:用户ID、画图板ID等
数据库备份和恢复策略:定期备份,异地 存储,灾难恢复等
数据库安全:用户权限管理,数据加密, 访问控制等
画笔算法:实现画笔的绘制和移动
图形选择算法:实现图形的选择和绘制
橡皮擦算法:实现橡皮擦的擦除功能
颜色选择算法:实现颜色的选择和切换
撤销和重做算法:实现撤销和重做操作
项目经验:在开发过程中,学 习了JAVA编程、图形绘制、用
户界面设计等知识
项目展望:未来可以继续优化 画图板软件,增加更多功能,
提高用户体验
功能实现:部分功 能实现不够完善, 需要进一步优化
用户体验:界面 设计不够友好, 需要改进
性能优化:程序 运行速度较慢, 需要优化
团队协作:团队成 员之间沟通不够顺 畅,需要加强团队 协作能力
画图板功 能:支持 绘制各种 图形,如 直线、曲 线、矩形、 圆形等
超棒的JAVA课程设计(画图工具)
Java与面向对象的程序设计课程设计报告课程名称Java与面向对象的程序设计实验学期2011 年至2012 年第二学期所在学院理学院年级10专业班级信息与计算科学学生姓名吴亿鑫学号201030760232 自评成绩95教师评成绩学生姓名王灿学号201030760224 自评成绩95 教师评成绩指导教师梁茹冰《Java与面向对象的程序设计》课程设计报告摘要随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。
JAVA是一门很优秀的编程语言,具有面向对象、与平台无关、安全、稳定和多线程等特点,是目前软件设计中极为健壮的编程语言。
JAVA不仅可以用来开发大型的应用程序。
而且特别适合Internet的应用开发。
JAVA确实具备“一次写成,处处运行”的特点,JAVA以成为网络时代最重要的编程语言之一。
本报告中介绍了用JAVA语言实现画笔系统的全部过程。
本次课程设计是配合JAVA程序设计课程,帮助我们深入学习掌握JAVA语言,熟练运用这个工具来编写的。
通过课程设计各个项目的综合训练,培养学生实际分析问题、编程和动手能力、提高学生的综合素质。
本课程设计尝试使用一些较生动的示例和设计项目,激发学生学习兴趣,引导学生主动学习,正确理解、接受需要重点掌握的知识点,为参加项目开发及更深入学习做好准备。
本次课程设计主要是用JAVA实现画笔系统,其系统主要完成以下功能:设计一个画图程序,能够实现画笔、画箭头、画直线、画圆形、画椭圆、画矩形、画多边形、书写文字修改该画笔的大小以及颜色。
该画图程序还需具有橡皮擦功能以及清空整个画面的功能关键词:画图工具,JAVA目录《Java与面向对象的程序设计》课程设计报告 (2)摘要 (3)目录 (4)1.课程设计内容概述 (6)1.1目的 (6)1.2任务 (6)2.程序实现的基本思想 (6)2.1需求分析 (6)2.1.1总体目标 (6)2.1.2要实现的功能 (7)2.2总体设计 (7)2.2.1 设计准备 (7)2.2.2需用到的类 (7)2.3编程环境及工具说明 (9)3系统流程图 (10)4. UML图 (11)5.容器结构层次树 (11)6.运行结果及分析 (12)6.1 画笔功能 (12)6.2 设置画笔粗细功能 (13)6.3画各种规则图案 (14)6.4设置颜色功能 (14)6.5 橡皮擦及输入文字功能 (15)6.6 新建,打开,保存功能 (15)7.总结 (16)8.合作课程设计的成员的分工 (17)参考文献 (17)1.课程设计内容概述1.1目的目前,Java语言不仅是一门被广泛使用的编程语言,而且已成为软件设计开发者应当掌握的一门基础语言。
JAVA绘图实验报告
南京工程学院实验报告课程名称 java基础实验项目名称图形用户界面设计实验学生班级实验学生姓名学号同组学生姓名无实验时间 2012年11月实验地点实验成绩评定指导教师签字年月日一、实验目的和要求1.目的:掌握java awt及swing组件的使用方法,包括窗口、框架、对话框、布局方式、面板、文本编辑器、按钮、组合框等,合理利用委托事件处理模型,掌握不同组件,不同事件的事件处理方法,设计出能够响应事件的java图形用户界面。
2.要求:设计图形用户界面,事件处理,异常处理并弹出对话框,提示重新输入信息。
二、实验题目验证哥德巴赫猜想,添加图形用户界面三、实验方法与步骤(需求分析、算法设计思路、流程图等)1.添加图形用户界面import java.awt.*;import java.awt.event.*;import javax.swing.*;public class gdbh extends frame implements actionlistener //窗口框架响应单击事件,利用awt组件设计框架{private button button; //按钮private textfield text1; //文本行private textarea text2; //文本区public gdbh(){super(验证哥德巴赫猜想); //设置框架窗口标题this.setbounds(450, 200, 350, 400); //设置框架的位置和尺寸this.setresizable(false); // 设置框架大小不可改变this.setbackground(color.lightgray); // 设置窗口背景颜色this.setlayout(new flowlayout()); // 默认窗口流布局中对齐this.add(new label(输入一个整数)); text1=new textfield(,20);this.add(text1);button=new button(验证哥德巴赫猜想); this.add(button);button.addactionlistener(this); //为按钮注册单击事件监听器,委托当前对象处理事件this.setlayout(new flowlayout()); //默认中对齐text2=new textarea(20,25);text2.seteditable(false);this.add(text2);this.setvisible(true); //设置组件可见this.addwindowlistener(new winclose()); // 为框架注册窗口事件监听器,委托winclose对象处理事件}2.实现单击事件和窗口事件监听器接口public void actionperformed(actionevent e) //单击事件处理方法,实现actionlistener接口{string str =text1.gettext(); //获得文本行的字符串try{long num = long.parselong(str); // 将字符串转化成长整形text2.settext(yz(num));}catch(numberformatexception n) {joptionpane.showmessagedialog(this, \+str+\字符串不能转换成整数,请重新输入!!);return;}} class winclose implements windowlistener //实现窗口事件监听器接口{public void windowclosing(windowevent e) // 窗口关闭事件处理方法{system.exit(0); //程序运行结束} public void windowopened(windowevent e) {} public void windowclosed(windowevent e) {} public void windowiconified(windowevent e) {} public void windowdeiconified(windowevent e) {} public void windowactivated(windowevent e) {} public void windowdeactivated(windowevent e) {} }3.异常处理若文本行中的字符串不能转化成长整形,将弹出对话框“字符串不能转换成整数,请重新输入!!;另外如果所输入的整数为小于等于2或大于2小于等于5 也会弹出一个对话框“输入错误!必须是大于2的偶数或大于5的奇数!!”(该窗口代码设置在yz()函数中)。
Java画图板课程设计报告(DOC)
目录1 引言 (1)1.1课程设计选题 (1)1.2课程设计的目的 (1)1.3本选题的设计背景 (1)2 需求分析 (1)2.1 功能需求 (1)2.2 软件开发运行环境 (1)3 总体设计 (2)3.1 软件结构设计 (2)3.1.1 结构设计 (2)3.2软件功能模块及主要类设计 (2)3.2.1功能描述 (2)3.2.2总体结构图 (3)3.2.3主要类设计 (3)4 详细设计与实现 (4)4.1 主界面 (4)4.1.1主界面功能设计 (4)4.1.2主界面设计 (4)4.1.3主界面主要代码 (5)4.2 菜单栏 (6)4.2.1菜单栏功能设计 (6)4.2.2菜单栏界面设计 (6)4.2.3菜单栏主要代码 (9)4.3 工具栏 (10)4.3.1工具栏功能设计 (10)4.3.2工具栏界面设计 (10)4.3.3工具栏主要代码 (10)4.4 画图区 (11)4.4.1画图区功能设计 (11)4.4.2画图区界面设计 (12)4.4.3画图区主要代码 (12)4.5 状态栏 (12)4.5.1状态栏功能设计 (12)4.5.2状态栏设计 (12)4.5.3状态栏代码 (12)5 小结和展望 (13)参考文献 (14)附录 (15)使用说明书 (15)源程序清单 (15)1引言1.1课程设计选题《画图板软件开发和设计》1.2课程设计的目的巩固和加深以Java 语言为基础的面向对象编程技术理论知识的理解,提高实际动手编程能力的培养,掌握以Java为核心的应用软件开发方案,达到能独立阅读、编制和调试一定规模的Java 程序的水平。
1.3本选题的设计背景日常生活、学习中我们经常需要画图,简单的画图我们可以手工画图,但往往还是不能满足需求。
因此,借助计算机准确而快速的画图就十分有必要了。
好的画图工具能够很好的完成日常生活中的各种画图工作。
学习了Java语言后设计开发一个画图软件是对Java语言学习的巩固以及提高。
JAVA设计报告仿Windows画笔系统设计
功能设计与实现
• 3.2.2类的方法介绍
• 1.定义的变量: • 2.初使化构造函数: • 3.paint()方法: • 4.itemStateChanged()方法: • 5.mouseDragged()方法: • 6.mousePressed()方法: • 7.mouseReleased()方法: • 8.mouseEntered()方法: • 9.mouseExited()方法: • 10.mouseClicked()方法:
• 经过对Java的一些见解,我觉得 这只是些皮毛,经过Java的一些分析, 我也对Java语言有了一定的了解。在 不断的修改代码的过程中,我发现用 Java语言编出一个有一个小程序是一 件非常有趣的事情,我期待着某一天 能设计出一款真正属于自己的热销游 戏。虽然我现在还没有能力做到,但 我相信终有一天会实现的。
整体设计思路与架构
1.整体设计思路
1. 设计一个画图程序,能够实现画笔、画直线、画圆形、画矩形 的功能,并且在绘图。过程中能够修改该画笔的大小以及颜色。 该画图程序还需具有橡皮擦功能以及清空整个画面的功能。
整体设计思路与架构
2.整体功能
1、这个画图程序,最基本的功能是,作为一个画笔,能利用 它实现在屏幕上任意绘画、书写的功能; 2、利用这个画图程序,通过选择画直线、画圆形、画矩形等 功能选项并且在屏幕上拖动鼠标操作能实现画出相应图形的功 能; 3、这个画图程序,还需具备橡皮擦的功能,利用这个橡皮擦 能够擦除屏幕上的图案,并且此橡皮擦也应该能够改变大小; 4、这个画图程序,还应该做到能够改变画笔颜色的功能; 5、这个画图程序,还应该具备能够清除整个屏幕已绘制图画 的功能。
• 3、此程序中,必须用到的包如下: • import java.awt.*; • import java.awt.event.*; • import java.util.*; • import javax.swing.*; • import java.awt.geom.*;
JAVA画图板程序实验报告(附完整代码)资料
画板程序一、软件系统分析和设计方案1、功能需求分析设计类似于Windows画板的程序,程序可以通过功能菜单(或工具条)进行功能选择操作,在画板中可以用鼠标操作绘制不同颜色的点,直线,多边形和椭圆,可以保存和打开自定义的图形文件。
2、结构设计过程经过对需求的分析,我们设计的画图板界面主要包括菜单栏、工具栏、画板三个部分。
菜单栏包含文件、编辑、帮助等常见功能菜单,实现打开保存文件等功能;工具栏主要包括画笔、矩形、椭圆、直线、刷子、橡皮、文字、颜色等工具,可完成一些基本操作;画板能够编辑处理图片及文字。
而代码实现上采用面向对象的思想,将上述组件封装与一个画板类中布局并实现功能;通过一个窗框类实现画板对象;最后在主类中建立窗框对象。
思路如下图:二、软件实现和代码编写具体代码及详细注释如下:import java.awt.*;import java.awt.event.*;import java.awt.geom.*;import javax.swing.*;import javax.swing.UIManager.*;import java.io.*;import java.util.Vector;//主类建立窗框public class DrawPad {public static void main(String[] args) {try {// 优化UI效果for (LookAndFeelInfo info : UIManager.getInstalledLookAndFeels()) { if ("Nimbus".equals(info.getName())) {UIManager.setLookAndFeel(info.getClassName());break;}}} catch (Exception e) {System.out.println(e);}new DrawFrame();}}// 添加窗口和画板组件class DrawFrame extends JFrame {public DrawFrame() {DrawPanel panel = new DrawPanel();add(panel);setTitle("简单JAVA画板");setBounds(100, 100, 800, 600);setVisible(true);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}}// 定义绘画点的基本属性class position implements Serializable {int x;int y;int type;String s;Color color;}// 定义画板组件class DrawPanel extends JPanel implements ActionListener, MouseListener, MouseMotionListener {JMenuBar mb;// 菜单栏JMenu menu1, menu2, menu3;JMenuItem i1, i2, i3, i4;JPanel jp1; // 工具栏public JButton anj0, anj1, anj2, anj3, anj4, anj5, anj6, anj7, anj8, anj9,anj10;JLabel l1, lcolor;Vector<position> thedraw = new Vector<position>(); // 保存画图轨迹的数组int style = 0; // 保存画图类型,默认为画笔int x1 = 0;// 保存点的坐标int x2 = 0;int y1 = 0;int y2 = 0;String input = "";// 默认输入文字内容Color linecolor = Color.BLACK; // 默认线的颜色public DrawPanel() {setBackground(Color.WHITE);setLayout(new BorderLayout());setCursor(Cursor.getPredefinedCursor(Cursor.CROSSHAIR_CURSOR));// 上部菜单栏mb = new JMenuBar();mb.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));add(mb, BorderLayout.NORTH);// 加入菜单栏的组件menu1 = new JMenu(" 文件");menu2 = new JMenu(" 编辑");menu3 = new JMenu(" 帮助");i1 = new JMenuItem("打开", new ImageIcon("img/open.png"));i2 = new JMenuItem("保存", new ImageIcon("img/save.png"));i3 = new JMenuItem("清空", new ImageIcon("img/clear.png"));i4 = new JMenuItem("关于简单JAVA画板", new ImageIcon( "img/about.png"));menu1.add(i1);menu1.addSeparator();menu1.add(i2);menu2.add(i3);menu3.add(i4);mb.add(menu1);mb.add(menu2);mb.add(menu3);add(mb, BorderLayout.NORTH);// 侧边工具栏jp1 = new JPanel();jp1.setBackground(Color.LIGHT_GRAY);jp1.setLayout(new BoxLayout(jp1, BoxLayout.Y_AXIS));jp1.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));add(jp1, BorderLayout.WEST);// 加入工具栏的组件anj0 = new JButton("画笔", new ImageIcon("img/pen.png"));anj1 = new JButton("刷子", new ImageIcon("img/brush.png"));anj2 = new JButton("橡皮", new ImageIcon("img/erease.png"));anj3 = new JButton("文字", new ImageIcon("img/word.png"));anj4 = new JButton("直线", new ImageIcon("img/sline.png"));anj5 = new JButton("矩形", new ImageIcon("img/rec.png"));anj6 = new JButton("圆矩", new ImageIcon("img/frec.png"));anj7 = new JButton("椭圆", new ImageIcon("img/eli.png"));anj10 = new JButton("");lcolor = new JLabel("■");// 会变色的方块l1 = new JLabel(" 颜色");anj10.add(lcolor);anj10.add(l1);jp1.add(anj0);jp1.add(anj1);jp1.add(anj2);jp1.add(anj3);jp1.add(anj4);jp1.add(anj5);jp1.add(anj6);jp1.add(anj7);jp1.add(anj10);// 事件处理i1.addActionListener(this);i2.addActionListener(this);i3.addActionListener(this);i4.addActionListener(this);anj0.addActionListener(this);anj1.addActionListener(this);anj2.addActionListener(this);anj3.addActionListener(this);anj4.addActionListener(this);anj5.addActionListener(this);anj6.addActionListener(this);anj7.addActionListener(this);anj10.addActionListener(this);addMouseListener(this);addMouseMotionListener(this);}// 记录鼠标选择的功能public void actionPerformed(ActionEvent e) {if (e.getSource() == anj0)style = 0;else if (e.getSource() == anj1)style = 1;else if (e.getSource() == anj2)style = 2;else if (e.getSource() == anj3) {style = 3;input = JOptionPane.showInputDialog("输入文字后在画板上点击放置");} else if (e.getSource() == anj4)style = 4;else if (e.getSource() == anj5)style = 5;else if (e.getSource() == anj6)style = 6;else if (e.getSource() == anj7)style = 7;else if (e.getSource() == anj10) {linecolor = JColorChooser.showDialog(null, "请选择颜色", Color.BLACK);lcolor.setForeground(linecolor);} else if (e.getActionCommand().equals("关于简单JAVA画板")) {JOptionPane.showMessageDialog(null,"这是一个简单的JAVA画板。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
佛山科学技术学院《可视化编程技术》课程设计报告画图软件设计学生姓名:周敏婷学号: 2011914123年级专业:11级教育技术学2班指导老师:容汝佳学院:教育科学学院广东★佛山提交日期:2013年6月目录1. 前言 (2)2.概要设计 (3)2.1 开发环境 (3)2.2 画图软件功能 (3)2.3 界面设计 (3)2.4 类的框架结构图 (4)3. 详细设计 (4)3.1 使用的JAVA类的说明 (4)3.2 类的主要方法 (5)3.2.1 颜色选择器 (5)3.2.2 控制画笔样式 (5)3.2.3 选取颜色按钮的监听件类 (6)3.2.4 设计总体认识 (6)3.2.5 程序流程图 (7)4. 运行结果 (7)5. 测试分析 (8)5.1 程序运行情况 (8)6. 源程序 (8)参考文献 (14)设计总结 (14)摘要:该程序是一个图形界面的简单的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 ActionListenerc lass 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 Button[12];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 Button[11];buttonStroke[0] = new Button("1");buttonStroke[1] = new Button("3");buttonStroke[2] = new Button("5");buttonStroke[3] = new Button("7");buttonStroke[4] = new Button("9");buttonStroke[5] = new Button("11");buttonStroke[6] = new Button("13");buttonStroke[7] = new Button("15");buttonStroke[8] = new Button("17");buttonStroke[9] = new Button("■");buttonStroke[10] = 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设计的总体认识●JAVA设计的摘要●JAVA设计的目录结构●JAVA设计的概要和详细设计●JAVA设计的版权意识●JAVA设计需要编译的环境●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 bel;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 Button[12];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++) {buttonColor[i] = new Button();buttonColor[i].setBackground(color[i]);buttonColor[i].addActionListener(buttonColorAction);buttonColor[i].addMouseListener(buttonCursor);paneColor.add(buttonColor[i]);}pane.add(paneColor); // 画笔颜色选择器Panel paneStroke = new Panel(new GridLayout(1, 13)); // 控制画笔样式buttonStrokeAction = new ButtonStrokeAction();Button[] buttonStroke = new Button[11];buttonStroke[0] = new Button("1");buttonStroke[1] = new Button("3");buttonStroke[2] = new Button("5");buttonStroke[3] = new Button("7");buttonStroke[4] = new Button("9");buttonStroke[5] = new Button("11");buttonStroke[6] = new Button("13");buttonStroke[7] = new Button("15");buttonStroke[8] = new Button("17");buttonStroke[9] = new Button("■");buttonStroke[10] = 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(buttonStroke[i]);buttonStroke[i].addMouseListener(buttonCursor);buttonStroke[i].addActionListener(buttonStrokeAction);if (i <= 8) {buttonStroke[i].setName("width");} else {buttonStroke[i].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(newCursor(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 mouseEvent) {}}参考文献Java语言程序设计.清华大学出版社.丁振凡主编设计总结经过一个学期的JAVA学习,对JAVA编程有了一定的认识,在做这个课程设计的时候,刚开始感觉自己无从下手,不知道该怎么开始,很茫然。