小菜鸟最近一直在试着写画图板,写到今天算是告一段落,来小结一下。
一、对于画图板功能的初步构想
首先,在敲代码之前,想好自己有哪些好的想法是很重要的。把自己的要求一步一步写下来。
画图板,能够绘制简单的直线,椭圆,矩形等的形状;然后,想要换色怎么办,记下来;想画出立体图,怎么画;在最小化窗口或窗口被覆盖后,如何能让绘制的图形还在画板上。。。。。。
二、初步功能的实现----组件的使用
使用JFrame 的组件是必须的,立即获得一个窗口化工具,画板有了。大小,名字迅速写好。紧接着,按钮,选项加上去。一个简单的画图板就有了。
三、监听器的添加
按钮是添加上去了,可是如何让电脑实现相应的功能呢
监听器使用有个难处在于要准确传递参数
在画图过程中,按钮监听器是必须的
import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseListener; /** * 按钮监听器,鼠标点击按钮实现对应的功能 * @author Administrator */ public class ButtonListener implements ActionListener{ public String command="line"; public void actionPerformed(ActionEvent e) { command=e.getActionCommand(); System.out.println(command); } }
写好它的函数以后还要添加在主函数最后的显示语句前,方便查看。
当然,要绘制图形的话,就需要鼠标的移动去获取对应点的坐标,所以鼠标监听器也来了。这里用到了MouseListener
// 鼠标监听器的点击和获取坐标 public void mouseClicked(MouseEvent e) { System.out.println("mouseClicked"); }; public void mousePressed(MouseEvent e) { // 获取按钮监听器中选择的按钮对应的动作命令,作为要绘制的形状类型 if (blis.command.equals("green")) { color = Color.green; } else { type = blis.command; } x1 = e.getX(); y1 = e.getY(); } public void mouseReleased(MouseEvent e) { x2 = e.getX(); y2 = e.getY(); }
点的坐标也都有了,绘制图形就不在是难事,更多需要去思考的是图形本事绘制所需要函数的问题。
。三、数组的使用
说到重绘,就不得不说鼠标在获取坐标后的存储。重绘的实现,第一步就是要想到重绘实际上是将已经获取的点的坐标及其相应的信息(比如颜色)等的信息存储起来。存储的话,菜鸟刚学,只会数组。所以构建了一个简单数组(可以实现元素的存入,取出,删除功能)
public class MyList<E> { Object myList1[] = new Object[0]; //增加 public void add(E e) { Object myList2[] = new Object[myList1.length+1]; for(int i = 0; i < myList1.length; i++) { myList2[i] = myList1[i]; } myList2[myList1.length] = e; myList1 = myList2; } //删除 public void delete(int index) { Object myList2[] = new Object[myList1.length-1]; for(int i = 0; i < index; i++) { myList2[i] = myList1[i]; } for(int i = index; i < myList2.length; i++) { myList2[i] = myList1[i+1]; } myList1 = myList2; } //修改 public void modify(int index, E e) { myList1[index] = e; } //取出 public E getElement(int index) { return (E)myList1[index]; }
接下来,在主函数中,构建重绘的函数
其中,super.paint(g);是很必要的,它的作用是重绘组件。
public void paint(Graphics g) { super.paint(g); /****** 重绘的方法写到这里 ********/ for(int i = 0; i < List.getSize(); i++) { List.getElement(i).drawING(g); } }
四、效果及总结
总结:在coding中,同学给予的帮助令我影响深刻:
1、他的代码整齐而有规划。每一个class只实现与名字相关的功能,看着方便,也不方便修改;
2、在构建数组函数时,考虑到了通用性。用泛型去定义,更加方便去调用,增加了它的通用性。不需在每一次的使用时对以前的函数进行大修改,只要简单修改参数名和添加备注就可以。
当然还有不少功能没有实现,这些在今后的学习中继续完善
相关推荐
这个“山寨”版的画图板是由你的一位同学开发的,旨在提供一个基础的绘图环境,分享给更多的人使用。下面我们将深入探讨Java画图板的核心知识点,以及可能涉及到的技术和原理。 1. **Java GUI基础** - Java中的...
山寨主板的BIOS ROM
"山寨平板刷机"是指针对非知名品牌或非正规渠道生产的平板电脑进行的类似操作。这些设备通常采用开源的Android系统,而刷机可以让用户获取更最新的系统版本、优化性能或增加自定义功能。 在领秀山寨平板的刷机教程...
各种x58山寨板的bios rom 合集.exe 甚至包括了4个各种x58山寨板的bios rom 合集.exe 甚至包括了4个
【标题解析】:“山寨平板8650最终极精简版”这个标题指的是一个针对型号为8650的山寨平板电脑的系统优化版本。"最终极精简版"意味着这是该系列的一个高度优化和轻量化的固件,可能是为了提高设备的运行速度和效率,...
然而,中国的“山寨文化”却在这种逆境中展现出其顽强的生命力。山寨商品不仅存活下来,反而实现了销售增长。这背后体现的,是一种快速抄袭、复制并灵活适应市场的能力。在此基础上,【超思维山寨营销模板】应运而生...
超思维山寨营销模板.ppt
山寨手机板的生产门槛相对较低,订单数量通常以每批5000片计算,接近“公板”的概念。为了确保货款回收,PCB厂通常采用先收70%货款,交货后再收取剩余30%的付款方式。 PCB在山寨手机板市场的竞争: 在山寨手机板...
标题中的“国产山寨平板ZH960原厂固件”是指这款平板电脑出厂时的原始系统软件,通常包含了操作系统、驱动程序以及预装的应用程序。固件是设备的基础,它控制着硬件的操作和功能,对于平板电脑来说,这部分通常基于...
(黑色--思维模板)库卡克山寨PPT模板.ppt
【华强北山寨平板电脑市场概览】 华强北,位于深圳市,是中国乃至全球知名的电子产品集散地。这里曾见证了从山寨手机、上网本到电子书等各类科技产品的兴衰起伏。2011年,随着苹果iPad的热销,平板电脑市场开始受到...
【标题】:“山寨HTC VIVA刷机教程(图文)”是指针对非官方版本的HTC VIVA手机进行系统升级或修复的操作指南,通常这类设备在市场中被称为“山寨机”。这个教程是通过图文并茂的方式,帮助用户了解如何对搭载海思K3...
山寨平板电脑调查借鉴.pdf
山寨平板电脑调查实用.pdf
QQ是中国知名的即时通讯软件,由腾讯公司开发,其源代码是商业机密,不对外公开。然而,"山寨版qq源码.素材"这个主题暗示我们可能会探讨的是一个非官方的、模仿QQ功能的软件源码及相关的素材。在IT行业中,这样的...
标题中的“1037u-tm-i37ce1522v120155山寨一体机主板bios”指的是一个特定型号的一体机主板的BIOS固件,这是一台采用Intel 1037U处理器的山寨版一体机。一体机是将计算机的各个部件集成在一个紧凑的外壳内,包括...
我想上传这个文件。帮助有需要的人,我的山寨MTK5672变砖了,正在学习如何刷机,
山寨E盾,将需要登陆的程序山寨到本地,或者指定的服务器上
### 山寨网线显形记:揭秘与防范 #### 一、网线的基本类型及其特点 在了解山寨网线之前,我们首先需要对正规网线的类型有所认识。正规网线主要分为屏蔽双绞线(Shielded Twisted Pair, STP)和非屏蔽双绞线...