(First):准备工作
因为我这个画图板要用到自定义队列,所以,实现先将简单的自定义队列叙述一遍。
这里我先说明一下:
这个自定义队列的特点:1.长短不固定。2.类型不固定。
为什么要使用? 因为可以根据我们的需要,添加或者删除不同的数据,这个队列不仅仅可以用在我所使用的画图板程序,也可以使用在其他需要长短变换,类型变化的程序中去;
接着随我来...
第一步,创建一个自定对队列的接口:QueueInterface,方便以后在用到自定义队列时直接添加
//自定义队列的接口
public interface QueueInterface<E> {
//添加
public void add(Object num);
//删除
public void delete(int index);
//修改
public void modify(int index,Object num);
//插入
public void insert(int index,Object num);
//得到
public E getnum(int index);
//得到长度
public int getsize();
}
这里需要注意的地方是:我在自定义队列中放入了一个范类型;这个类型不固定,可以是String,Integer或者是自己所创建的类型也可以
形象的比喻:这是一个盒子,盒子里面放的是什么由你这个主人来确定,
好处是:由于你要使用一个类型就创建一个该类型的队列,所以,结果是你要使用多少类型就不停的重复着这一个相同的动作,造成了代码的冗余。用这个范类型可以解决这个问题;
接着就要实现这一借口:QueueList
/**
* 队列
* @author Administrator
*
* @param <E>
*/
public class QueueList<E> implements QueueInterface<E> {
//创建一个新数组
private Object[] Q = new Object[0];
/**
* 添加队列
* num:添加的数据
*/
public void add(Object num) {
Object[] o = new Object[Q.length + 1];
o[Q.length] = num;
for (int i = 0; i < Q.length; i++) {
o[i] = Q[i];
}
Q = o;
}
/**
* 删除队列的元素
* index:要删除对象的索引
*/
public void delete(int index) {
Object[] o = new Object[Q.length - 1];
for (int i = 0; i < Q.length; i++) {
if (i < index) {
o[i] = Q[i];
}
if (i > index) {
o[i - 1] = Q[i];
}
}
Q = o;
}
/**
* 修改队列的元素
* index:修改对象的索引
* num: 修改后的数据
*/
public void modify(int index, Object num) {
Q[index] = num;
}
/**
* 插入到队列的元素
* index:插入的索引
* num: 插入的元素
*/
public void insert(int index, Object num) {
Object[] o = new Object[Q.length + 1];
for (int i = 0; i < Q.length + 1; i++) {
if (i < index) {
o[i] = Q[i];
}
if (i == index) {
o[i] = num;
}
if (i > index) {
o[i] = Q[i - 1];
}
}
Q = o;
}
/**
* 得到队列中的元素
* index :获得元素的索引
*/
public E getnum(int index) {
E e = (E) Q[index];
return e;
}
/**
* 得到长度
*/
public int getsize(){
return Q.length;
}
}
这个程序很长,其实大多都是高级语言相通的;
这里我说明一下几点:
1.
private Object[] Q = new Object[0];
这个是创立一个新的数组,没有任何元素,长短是固定的;
所以,在下面各个可以改变数组长短大小的方法中,需要新创建一个新的数组,比如add(),delete(),insert()....
2.
得到数组中的某一个元素
public E getnum(int index) {
E e = (E) Q[index];
return e;
}
这里用了一个强制转换。因为所有的类型都是Object类型的子类,所以,这里的E类型是Object的子类,而Q是Object的对象,e是E类型的对象。小的转换成大的需要用强制转换
则有E e=(E)Q,后面的方括号里面的则是得到数组的下标;
另:
附件则是检验这个队列的方法
有兴趣的或者想挑问题的朋友可以下载下来试试我写的方法是否有误,嘿嘿。
分享到:
相关推荐
Jdk5.0 源代码使用说明<br><br>1. 类型基本操作<br>2. 面向对象的操作 适配器模式 单列模式 工程模式 组合模式。。。<br>3. 精确计算数字和随机数字<br>4. java.util.package高级使用 List Set collection..<br>5. ...
"我的画图板1.0" 是一个简单的图形绘制应用程序,允许用户在屏幕上进行自由绘画并重新编辑他们的作品。这个程序作为一个工具,旨在提供基本的绘图功能,适合初学者或者那些想要快速进行简单图形创作的用户。源码的...
大强工作室关于对话框(1.0).zip 定时提醒1.1(1.1).zip 对话框编辑器(1.0).zip 度量制式转换(1.0).zip 打印模块V1.0(1.0).zip 打印预览1.1(1.1).zip 打印预览1.3(1.3).zip 打印预览1.33(1.33).zip 打印预览2.41(2.41)...
大强工作室关于对话框(1.0).zip 定时提醒1.1(1.1).zip 对话框编辑器(1.0).zip 度量制式转换(1.0).zip 打印模块V1.0(1.0).zip 打印预览1.1(1.1).zip 打印预览1.3(1.3).zip 打印预览1.33(1.33).zip 打印预览...
556,delay1.zip <br>源码设计中的延时功能(1KB)<br>557,type_1.zip <br>趣味打字2.1(233KB)<br>558,test1.zip <br>asp编写动态网页计数器(1KB)<br>559,hztosm.zip <br>汉字转声母完全源代码(90KB)<br>560,...
556,delay1.zip <br>源码设计中的延时功能(1KB)<br>557,type_1.zip <br>趣味打字2.1(233KB)<br>558,test1.zip <br>asp编写动态网页计数器(1KB)<br>559,hztosm.zip <br>汉字转声母完全源代码(90KB)<br>560,...
1,01.zip<br>Displaying a 256 color bitmap<br>在程序中显示256色的位图(6KB)<END><br>2,02.zip<br>Creating a bitmap object from a BMP file<br>从位图文件中创建位图对象(6KB)<END><br>3,03.zip<br>An auto-...
DIBShow.zip<br>设备无关位图的一个里例子<1830kb><END><br>26,Clock.zip<br>一个数字时钟的图形的工程<1450kb><END><br>27,PAINTOBJ.zip<br>一个类似于画图的小程序<1450kb><END><br>28,detect.zip<br>用差影法检测...
<title>Canvas 画图板</title> <link rel="stylesheet" href="css/style.css"> </head> <body> <canvas id="drawCanvas"></canvas> <script src="js/draw.js"></script> </body> </html> ``` 这里的 `canvas` ...
【画画板工具画图工具v1.0绿色免费版】是一款专为用户设计的图形图像处理软件,类似于操作系统自带的画图程序,但它在功能上有所增强,为用户提供更为丰富的绘画体验。这款软件的主要特点包括功能强大且操作简便,...
MATLAB GUI实现动态画图曲线的源程序代码.rarMATLAB GUI实现动态画图曲线的源程序代码.rarMATLAB GUI实现动态画图曲线的源程序代码.rarMATLAB GUI实现动态画图曲线的源程序代码.rarMATLAB GUI实现动态画图曲线的源...
<blotmap> ... 存放渗透形状材质的文件夹 <brushtex> ... 存放画纸质感的文件夹 <elemap> ... 存放笔刷形状的文件夹 <toolink> ... 存放钢笔类工具信息的文件夹 <toolnrm> ... 存放普通笔刷工具信息的文件夹
<br><br> <br><br>System monitoring 系统监控 <br><br> <br><br>Memory monitoring 内存监控 <br><br> <br><br>Cluster information 集群信息 <br><br> <br><br>Log file tailing 实时追踪log文件 <br><br> <br><br...
画图板 代码画图板 代码画图板 代码画图板 代码画图板 代码画图板 代码画图板 代码画图板 代码画图板 代码画图板 代码画图板 代码画图板 代码画图板 代码画图板 代码画图板 代码画图板 代码画图板 代码画图板 代码...
彩虹画图板软件vb代码例题
标题中的"(2021-2022年)专题资料完美版基于触摸屏的画图板的设计与实现.ppt"表明这是一个关于使用触摸屏技术设计和实现画图板的教育资料,时间跨度为2021年至2022年。这份资料可能是针对电子工程或相关专业的学生,...
...................<br><br><br><br>SEFS--透明加密内核<br>=============================================<br>商业授权:sales@sefs.net<br>Bug 报告:bug@sefs.net<br><br><br><br> <br><br><br> <br>
<br> gsDXFWriter.dll控件 是一个基于 ActiveX DLL的,可导出 Autodesk DXF 画图文件的控件。<br><br> gsDXFWriter.dll控件的示意图如下: <br><br> <img src=DownloadFilesimage_activeximagesgsdxfwriter_dll.gif>...
本知识点主要围绕“C#窗体上画图”这一主题展开,结合《C#范例宝典》中的精选示例,我们将深入探讨如何在窗体上实现基本和高级的绘图功能。 首先,窗体(Form)是所有用户界面的基础,它是用户与程序交互的窗口。在...