经过一段时间的java学习后,在老师的引领下,做了一个终极阉割版的画图软件,可以实现的功能有限,未实现的功能被当作扩展。
上面是老师带领下的版本,可以通过单选按钮来选择绘画的图形;实现了鼠标左键绘制图形颜色为颜色1,右键绘制图形颜色为颜色2.;一些常用不可改变的颜色选择,通过点选按钮:颜色1和颜色2 来改变左右键的颜色。在颜色选择面板下预留了可以自定义的颜色框;
通过点击编辑颜色按钮弹出位于屏幕中央(可变化)的颜色编辑板,在颜色编辑板上选择的颜色会改变常用颜色选择面板最下方预留出来的自定义颜色选择框,如图
通过多次点击后会填满自定义框:
可以看到在改变自定义框时也改变了选中的颜色按钮的颜色。这时当自定义框填满后,再一次点击后:
会发现会改变第一个自定义框的颜色。但这是不符合常用颜色选择框设计的。因为越后面的自定义是越接近你现在时间选择的。也就是说第一个自定义框是离你最久远的 可当你选择第七个颜色后,第七个会代替第一个,但实际上第七个应该代替第六个,也就是说第七个会挤进自定义框变成第六个,第一个会被挤出自定义框,第二个成为了第一个。
这个现象是可以通过数组,判断,循环来实现的。但最近学习 栈和队列的定义后,我又有了新的想法,上述说的过程不就可以简化为先放进自定义框里的颜色最先被挤出去,也就是队列的定义FIFO: First in First Out。栈LIFO:Last In First Out。
上面的是我最开始的代码。
这个是通过队列来实现的代码。
上面的是实际效果图,可以看到我的想法是可以实现的,也许很笨拙,但还是很开心,证明我在思考相似问题时会考虑运用栈,队列,链表的相关知识,当然上面我运用的是 可变数组来实现队列,我们还可以运用链表来实现队列。
第一次总结就到这里,只是简单的栈,队列,链表的应用,个人也在努力的还原电脑自带画图板的功能,看老师写的时候觉得没什么,但自己开始实现其他功能是会发现很难,思路,头绪都是难题,每当我实现一个功能我都会发一个总结来记录一下成长。
原文地址:https://www.cnblogs.com/lxm-blog/p/9052234.html