java的第二个程序——画图板

一、功能介绍:
1.实现画直线、圆、矩形、橡皮四种形状。绘画方式:按住鼠标键拖动、再释放,与Windows的画图方式相似;
2.可以选择画笔颜色;
3.根据用户指定路径保存;
4.只能打开自定义格式的图形文件,自定义为.ss文件;
5.清楚画板上的图像

二、完成步骤:
1.首先通过Java中的画图函数进行画图,均通过点击鼠标两次实现画图。加入JColorChooser。加入JComboBox。初次使用e.getSource,判断JFrame的事件源。e.getaActionCommand,判断动作事件源。
2.加入清除功能。简单地进行保存,颜色为默认,并且在默认途径下保存,打开。
3.实现类似Windows的画图方式,并可拖动至上下左右四个方向,都能拖动释放画图。实现画矩形方法,即矩形左上角点,取最小的x和y。
4.将颜色写入文件来保存,分为红、绿、蓝三个int来保存。
5.把JFrame画布转为Jpanel画布。
6.完善保存和打开功能,加入JFileChooser,并默认给用户定义的文件名保存为.ss格式,当文件名已存在时,询问用户是否覆盖原文件。

三、错误总结:
这是Java的第二个程序,所以,小错误还是挺多的。
1.每个和事件源有关的组件,都要添加监听器,否则无法监听。总是忘记添加,常常只给一个组件添加,以为都添加了。
2.保存,如何存数据,就如何读文件。读、写顺序一致,否则就报错了。
3.要New 队列,否者只是申明,队列不存在。受到C语言中,一般没有new就定义数组的影响了。错误为Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException。
4.定义变量时,最好赋初值,否则,可能初次使用为null,影响程序执行。
5.方法fillRect(x1,y1,5, 5),填充的边界为5以内的,没有填充边界5。

四、感想
首次用到了Java中的数据结构java.util.ArrayList< >。首次使用输入输出流文件保存。由于dis.readByte();没有读完的返回标志,所以根据存的长度读。由于涉及到多种图形,而他们有些属性是一致的,所以用到了抽象类。在JFrame里另外定义了一个Jpanel画布,除了JFrame,其他组件只能用setPreferredSize(new Dimension(580,500))来设置大小。每个组件都有各自的paint()方法,当组件内的内容在显示屏上由少变多,则自动调用,目前对paint()和repaint()的方法不是很详细。用一个类继承JPanel,来扩充JPanel的作用,体现了继承的扩展性。
不足之处,由于设计的橡皮是画背景颜色的矩形,当画了很多橡皮之后,若继续画图,则会不断地重绘,屏幕就会闪。可能存储或者橡皮的设计方式不对,而引起的闪烁。另外,对于如何填充两个图形之间的相交处颜色,目前还没想到方法。

今天,也是第16届广州亚运会闭幕式,运动员拼搏的精神真威武,向你们致敬,并且学习。

[img]http://dl.iteye.com/upload/attachment/355003/fce8ab6b-a46a-3bba-ac7c-19d3180f583b.jpg[/img]
总图


[img]http://dl.iteye.com/upload/attachment/355009/079e185b-834c-3fe0-b21f-bd7dcb2bfe1f.jpg[/img]
保存

[img]http://dl.iteye.com/upload/attachment/355005/f75db75d-e003-37e8-80fb-3d26bcb3ba08.jpg[/img]
保存的文件名相同,提示是否覆盖

你可能感兴趣的:(java的第二个程序——画图板)