画图板的功能还在日趋完善,现在正在努力实现利用自定义队列存储绘图信息然后重绘的功能,在实现这个功能的过程中,遇到的最多的异常就是java.lang.ClassCastException了,
造成这个异常的原因就是重绘时读取存储的信息时出现了错误,导致一些类赋值时不匹配。
就拿直线来说,我们要保存直线的信息,需要在每次画完直线时存储这条直线的信息,即在鼠标释放(MouseReleased)里面添加直线的首尾两个点的坐标、用于判断图形类型的标识符、图像线条的粗细以及直线的颜色。代码如下:
( 其中x1,y1为直线的第一个点即鼠标按下的点的坐标,list为用于存放信息的自定义队列。)
然后我们会在DrawPanel里面的pa
![](https://i-blog.csdnimg.cn/blog_migrate/c876a1816717892abe6702d476dfbde0.jpeg)
造成这个异常的原因就是重绘时读取存储的信息时出现了错误,导致一些类赋值时不匹配。
就拿直线来说,我们要保存直线的信息,需要在每次画完直线时存储这条直线的信息,即在鼠标释放(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");
//保存颜色
list.add(color_command);
}
}
然后我们会在DrawPanel里面的pa