`
bigfang
  • 浏览: 39721 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
文章分类
社区版块
存档分类
最新评论

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届广州亚运会闭幕式,运动员拼搏的精神真威武,向你们致敬,并且学习。


                               总图



                             保存


                   保存的文件名相同,提示是否覆盖
  • 大小: 70.4 KB
  • 大小: 34.6 KB
  • 大小: 10.3 KB
  • 大小: 70.4 KB
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics