版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_42449444/article/details/84859910
写在前面:
超级无敌巨想吐槽我们学校的课程设置,这TM也太不合理吧。上学期我C和Python一起学(最后Python98 C语言只有79 C实验93),这学期C 和JAVA一起学。。。。图形用户界面、多线程飞起讲,只用了12周(每周2大节理论1大节实验)就把300多页内容讲完了,然后给我们布置这个制作一个绘图软件的期末大作业,好了 说多了都是泪,预习开始。
制作一个简单的绘图软件
实验要求:
1、软件包括菜单“Start”,“Start”菜单下有“New”、“DrawLine”“Exit”菜单项。New实现清空画布;DrawLine菜单右拉出菜单DrawLineA(从鼠标左键按下到鼠标左键放开划线),DrawLineB(从鼠标左键按下开始,随鼠标拖动划直线),DrawLineC(鼠标左键按下,随鼠标移动化任意曲线);Exit实现退出程序。
2、添加工具栏,工具栏上添加JComboBox组件,用于选择线条的宽度。在工具栏上添加三个JRadioButton按钮,分别表示画圆、画矩形、划直线(点下鼠标左键后,拖动鼠标线条随之移动,释放左键后划出直线),一个JButton按钮用于打开颜色选择对话框,选择线条的颜色;添加一个JButton按钮,标题为“Eraser”,用于擦除图像。
预习开始:
我遇到的第一个难题就是:菜单栏的菜单Start的子菜单DrawLine下还有子菜单DrawLineA,DrawLineB,DrawLineC,如何通过代码来实现。于是我预习的第一个知识点是:菜单栏/菜单/子菜单组件JMenuBar/JMenu/JMenuItem (来源作者:Thinkd00r)。
这部分内容的预习已经完成了,看下预习的成果。
接着我发现DrawLine菜单下应该是三个单选按钮,而不是像我的上图那样,于是我遇到了第二个难题,怎么设置复选框和单选按钮组,并且每次只允许选择一个按钮呢?单选按钮又如何添加监听事件呢?预习第二个知识点出现了:单选按钮:JRadioButton(来源作者:蓝蓝223)。
这部分内容的预习已经完成了,看下预习的成果。
预习的第三部分内容:实现三种鼠标画线方式DrawLineA、B、C的画线操作。这部分 我是参考教材电子工业出版社的《JAVA程序设计实用教程第4版》上面的177页例6.8来实现的,看下效果。
点击Exit按钮退出程序,这个比较好实现 不用预习,到这里老师给定的实验要求1就全实现了。Exit功能如下图。
预习的第四部分内容是如何创建工具栏并添加工具栏组件?预习的第四个知识点: JToolBar(工具栏)(来源作者:xietansheng)。工具栏是可以拖动的,看下效果。
预习的第五部分内容是如何创建一个下拉列表框?预习的第五个知识点:JComboBox(下拉列表框)(来源作者:xietansheng)。 下拉列表框建立好了之后,先用sysout来看下监听事件是否也添加成功,看下效果。
预习的第六部分内容是如何根据下拉列表框的选项,来改变画布中的画线的宽度? 预习的第六个知识点:如何设置java drawLine画的线的粗细(来源作者: MingChaoSun)。我是用了一个char型来记录下拉列表框的选项是'粗'、'中'还是'细',然后再在内部类DrawLineCanvas画线时实现的,看下效果。
预习的第七部分是如何在点击Circle、Matrix、Line、Eraser(才发现我上面写的是eraser,首字母忘记大写了)这些工具栏按钮后,出现相应的画图功能? 预习的第七个知识点是在教材上。看下画椭圆、画矩阵、画直线和橡皮擦的效果:
预习的第八部分是如何添加颜色选择器来改变画笔的颜色?预习的第八个知识点来自:JColorChooser(颜色选择器)(来源作者:xietansheng)。看下预习效果: