画图板中重绘功能遇到的问题
画图板的功能还在日趋完善,现在正在努力实现利用自定义队列存储绘图信息然后重绘的功能,在实现这个功能的过程中,遇到的最多的异常就是java.lang.ClassCastException了,
造成这个异常的原因就是重绘时读取存储的信息时出现了错误,导致一些类赋值时不匹配。
就拿直线来说,我们要保存直线的信息,需要在每次画完直线时存储这条直线的信息,即在鼠标释放(MouseReleased)里面添加直线的首尾两个点的坐标、用于判断图形类型的标识符、图像线条的粗细以及直线的颜色。代码如下:
( 其中x1,y1为直线的第一个点即鼠标按下的点的坐标,list为用于存放信息的自定义队列。)
//鼠标释放的监听public void mouseReleased(MouseEvent e){x2 = e.getX();y2 = e.getY();//保存两个点list.add(x1);list.add(y1);list.add(x2);list.add(y2);if("line".equals(shape_command)){//画直线g.drawLine(x1, y1, x2, y2);//保存画笔粗细list.add(0);//保存标识符list.add("line");}else if("pencil".equals(shape_command)){//保存画笔粗细list.add(0);//添加铅笔标志位list.add("pencil");} //保存颜色list.add(color_command); }