• JAVA监听器响应机制模拟

    最近一直在搞低耦合的代码设计,后来发现JAVA中的监听器效果很不错,就特地研究了一下监听流程,后来经过调试终于成功,供大家分享下: 响应代码: /** * 事件响应运行 * @author wangchen * */ class EventRun { public static void main(String[] args) { /** * 事件源定义 */ MyEventSource eventSoure1 = new MyEventSource(); System.out.println("创建事件源成功!"); /** * 事件源加载监听器 */ eventSoure1.AddListener(new MyListener() { @Override public void Listen(MyEvent e) { // TODO Auto-generated method stub System.out.println("【一】事件发生改变:改变代码\"" + ((MyEventSource)(e.GetEventSource())).getFlag() + "\""); } }); System.out.println("首次添加监听器成功!"); eventSoure1.AddListener(new MyListener() { @Override public void Listen(MyEvent e) { // TODO Auto-generated method stub System.out.println("【一】新的事件监听:改变代码不变\"" + ((MyEventSource)(e.GetEventSource())).getFlag() + "\""); } }); System.out.println("再次添加监听器成功!"); //事件发生改变 for (int i = 0; i < 10; i++) { eventSoure1.SetFlag(i); } System.out.println("创建新的事件源!"); MyEventSource eventSoure2 = new MyEventSource(); eventSoure2.AddListener(new MyListener() { @Override public void Listen(MyEvent e) { // TODO Auto-generated method stub System.out.println("【二】事件发生改变:改变代码\"" + ((MyEventSource)(e.GetEventSource())).getFlag() + "\""); } }); for (int i = 0; i < 10; i++) { eventSoure2.SetFlag(i); } eventSoure1.SetFlag(10); System.out.println("事件监听流程结束!"); } } 运行结果: 创建事件源成功! 首次添加监听器成功! 再次添加监听器成功! 【一】事件发生改变:改变代码"0" 【一】新的事件监听:改变代码不变"0" 【一】事件发生改变:改变代码"1" 【一】新的事件监听:改变代码不变"1" 【一】事件发生改变:改变代码"2" 【一】新的事件监听:改变代码不变"2" 【一】事件发生改变:改变代码"3" 【一】新的事件监听:改变代码不变"3" 【一】事件发生改变:改变代码"4" 【一】新的事件监听:改变代码不变"4" 【一】事件发生改变:改变代码"5" 【一】新的事件监听:改变代码不变"5" 【一】事件发生改变:改变代码"6" 【一】新的事件监听:改变代码不变"6" 【一】事件发生改变:改变代码"7" 【一】新的事件监听:改变代码不变"7" 【一】事件发生改变:改变代码"8" 【一】新的事件监听:改变代码不变"8" 【一】事件发生改变:改变代码"9" 【一】新的事件监听:改变代码不变"9" 创建新的事件源! 【二】事件发生改变:改变代码"0" 【二】事件发生改变:改变代码"1" 【二】事件发生改变:改变代码"2" 【二】事件发生改变:改变代码"3" 【二】事件发生改变:改变代码"4" 【二】事件发生改变:改变代码"5" 【二】事件发生改变:改变代码"6" 【二】事件发生改变:改变代码"7" 【二】事件发生改变:改变代码"8" 【二】事件发生改变:改变代码"9" 【一】事件发生改变:改变代码"10" 【一】新的事件监听:改变代码不变"10" 事件监听流程结束!

    4
    119
    3KB
    2011-11-15
    12
  • 柱状图和饼图的绘制示例源码

    我的源码是在 luo_sen兄 提供的代码的基础上修改的,可以参照原先的地址http://download.csdn.net/source/746016,以前的代码在源码关联上存在问题,无法编译,缺少相关的工程文件,我在他的代码基础上进行推演,最终获得了可编译的工程,所以和大家一起分享,luo_sen兄的代码3分,我也不好意思多要,我怎么也做了5个小时,工资上超过百元了,嘿嘿!!故多要2个积分,望大家海涵!有问题可以联系wangchenmlg@163.com,大家一起研究!

    4
    81
    181KB
    2009-08-21
    10
  • UltimateToolbox帮助文档

    费了好大的劲从网上下来的,欢迎大家下载,积分为3个,看在本人辛苦下在得分上,望大家海涵

    0
    45
    4.76MB
    2008-12-23
    0
  • java 文件及文件夹 操作源码

    此文件支持对文件及文件夹结构的多种操作,其中包括: 读取文本文件内容 遍历指定路径下指定后缀的所有文件 新建目录 多级目录创建 新建文件 有编码方式的文件创建 删除文件 删除文件夹 删除指定文件夹下所有文件 复制单个文件 复制整个文件夹的内容 仅仅拷贝指定路径下的文件夹结构 移动文件 移动目录

    5
    209
    12KB
    2008-12-15
    10
  • java DES,DESede,Blowfish 加密 和 MD5 加密 方法操作源码

    该文件汇总了标题所述的加密方法的操作源码,并考虑到加密数据的文件存放问题,避免了byte[]转string类型时的数据失真的bug;下面是演示部分代码和演示结果: public static void main(String[] args) { try {//过程演示,普通的加解密操作 Eryptogram etg = new Eryptogram(); etg.debug = true; byte[] key = etg.getSecretKey(); String aa = "0123456789中文测试EnglishTest!%$#@!~~"; byte[] en = etg.encryptData(aa.getBytes(), key); /*********************************************************/ /*为了将加密数据写入文件但不出现错误,目前的方法是转为int类型进行存储*/ /*********************************************************/ int[] intTemp = new int[en.length/4]; for (int i = 0; i < intTemp.length; i++) { byte[] byteTemp = new byte[4]; byteTemp[0] = en[i*4+0]; byteTemp[1] = en[i*4+1]; byteTemp[2] = en[i*4+2]; byteTemp[3] = en[i*4+3]; intTemp[i] = etg.byteToint(byteTemp); // System.out.println("intTemp["+i+"]="+intTemp[i]); } /*********************************************************/ /*待提取文件内容后,将int转化为byte即可进行解密 */ /*********************************************************/ byte[] decodeTemp = new byte[intTemp.length*4]; for (int i = 0; i < intTemp.length; i++) { byte[] byteTemp = etg.intTobyte(intTemp[i]); decodeTemp[i*4+0] = byteTemp[0]; decodeTemp[i*4+1] = byteTemp[1]; decodeTemp[i*4+2] = byteTemp[2]; decodeTemp[i*4+3] = byteTemp[3]; } byte[] de = etg.decryptData(decodeTemp, key); } catch (Exception e) { // TODO: handle exception e.printStackTrace(); } try {//MD5非对称加密 Eryptogram etg = new Eryptogram(); System.out.println("对‘01234567’进行MD5加密后的结果:"+etg.encrypt("01234567")); } catch (Exception e) { // TODO: handle exception e.printStackTrace(); } } } 结果: 生成密钥:6B:58:23:40:43:0B:F4:9D 加密前的字符串:0123456789中文测试EnglishTest!%$#@!~~ 加密前的二进串:30:31:32:33:34:35:36:37:38:39:D6:D0:CE:C4:B2:E2:CA:D4:45:6E:67:6C:69:73:68:54:65:73:74:21:25:24:23:40:21:7E:7E 加密后的二进串:72:83:1D:0A:BF:F0:EB:81:DE:B2:DD:58:CA:EA:4F:7B:8C:9F:98:13:01:99:F0:F4:48:6B:1E:8F:17:D2:3E:DF:9B:C1:90:39:D5:91:6D:F8 解密前的信息:72:83:1D:0A:BF:F0:EB:81:DE:B2:DD:58:CA:EA:4F:7B:8C:9F:98:13:01:99:F0:F4:48:6B:1E:8F:17:D2:3E:DF:9B:C1:90:39:D5:91:6D:F8 解密后的二进串:30:31:32:33:34:35:36:37:38:39:D6:D0:CE:C4:B2:E2:CA:D4:45:6E:67:6C:69:73:68:54:65:73:74:21:25:24:23:40:21:7E:7E 解密后的字符串:0123456789中文测试EnglishTest!%$#@!~~ 对‘01234567’进行MD5加密后的结果:2e9ec317e197819358fbc43afca7d837

    4
    169
    2KB
    2008-12-15
    32
  • 基于javadbf-0[1].4.0.jar包的dbf文件操作源码

    一般的dbf文件都是数据库操作文件,用c语言进行操作的dll很多,但是java操作的很少,我找到了一个javadbf-0[1].4.0.jar的包,但是操作效果很不理想,尤其是末尾空格和乱码问题,于是我在这个jar包的基础上进行进一步开发,在尽量不影响效率的情况下,增加了对dbf各个方面的处理功能:查询,创建,copy文件结构等功能,目前没有发现bug,说明文档在程序中很详细,以下是我的说明演示部分代码,此源码需要5个积分,主要是因为可能需求不多,卖得少,成本高,望大家海涵:) 演示部分源码: public static void main(String[] args) { // TODO Auto-generated method stub /************************************************/ /* 初始化dbf操作对象 */ /************************************************/ DBF_tool dbf = new DBF_tool(); /************************************************/ /* 创建dbf操作,生成"creatDBF.dbf",此处采用相对路径 */ /* 也可以用绝对路径进行创建 */ /************************************************/ System.out.println("正在创建dbf文件:creatDBF.dbf ..."); dbf.createFile("creatDBF.dbf"); //dbf.createFile("D:\\creatDBF.dbf");//绝对路径 /************************************************/ /* 创建dbf表头信息,此处只能一次性输入所有表头信息 */ /* 表头信息由FiledInfor类生成,然后放入vector中 */ /* 此处为:编号,姓名,年龄,salary(薪水),出生日期 */ /************************************************/ System.out.println("创建dbf文件表头信息 ..."); FiledInfor filedinfor;//表头信息对象 Vector<FiledInfor> vecTitle = new Vector<FiledInfor>(); filedinfor = new FiledInfor(); filedinfor.filedDataType = DBF_tool.FIELD_TYPE_C;//类型 filedinfor.filedName = "编 号"; //名称 filedinfor.fieldLength = 8; //长度 vecTitle.add(filedinfor); filedinfor = new FiledInfor(); filedinfor.filedDataType = DBF_tool.FIELD_TYPE_C; filedinfor.filedName = "姓 名"; filedinfor.fieldLength = 12; vecTitle.add(filedinfor); filedinfor = new FiledInfor(); filedinfor.filedDataType = DBF_tool.FIELD_TYPE_N; filedinfor.filedName = "年 龄"; filedinfor.fieldLength = 5; filedinfor.decimalCount = 0; //精度 vecTitle.add(filedinfor); filedinfor = new FiledInfor(); filedinfor.filedDataType = DBF_tool.FIELD_TYPE_F; filedinfor.filedName = "salary";//不支持"salary(**)"这种方式,但支持中英文结合 filedinfor.fieldLength = 7; filedinfor.decimalCount = 2; vecTitle.add(filedinfor); filedinfor = new FiledInfor(); filedinfor.filedDataType = DBF_tool.FIELD_TYPE_D; filedinfor.filedName = "出生日期"; vecTitle.add(filedinfor); dbf.writeFiled(vecTitle); /************************************************/ /* 创建dbf表内容信息 */ /************************************************/ System.out.println("向dbf文件中添加内容 ..."); String dbfLine;//dbf每行的内容,filed之间以","分隔 dbfLine = "000001,经理,36,15000.00,88-12-9"; dbf.writeDBFLine(dbfLine); dbfLine = "000002,助理,30,10000.00,82-3-17"; dbf.writeDBFLine(dbfLine); dbfLine = "000003,小兵1,25,4000.12,87-5-20"; dbf.writeDBFLine(dbfLine); dbfLine = "000004,小兵2,28,4200,07-2-15"; dbf.writeDBFLine(dbfLine); dbfLine = "000005,小兵3,29,3800.00,02-4-23"; dbf.writeDBFLine(dbfLine); /************************************************/ /* 关闭创建dbf表操作,此为必须操作 */ /************************************************/ System.out.println("创建表操作结束!"); dbf.close(); /************************************************/ /* 打开dbf操作,绝对路径和相对路径皆可 */ /************************************************/ dbf = new DBF_tool(); System.out.println("正在打开dbf文件:creatDBF.dbf ..."); dbf.openFile("creatDBF.dbf"); System.out.println("分析..."); /************************************************/ /* 得到dbf的行列个数 */ /************************************************/ System.out.println("此dbf文件的数据有:"+dbf.DBFGetRecordCount()+ "行,"+dbf.DBFGetFieldCount()+"列,"); /*******************************************************/ /* 得到dbf各个字段的详细信息(目前可以得到:名称、类型、长度、精度 */ /*******************************************************/ System.out.println("各个字段的详细信息为:"); for (int i = 0; i < dbf.DBFGetFieldCount(); i++) { filedinfor = dbf.getDBFFiledInfor(i); System.out.println("name:"+filedinfor.filedName+" length:"+filedinfor.fieldLength); } /************************************************/ /* 得到指定名称在dbf中的位置 */ /************************************************/ System.out.println("其中,年龄在dbf表中的位置是:"+dbf.getDBFFiledNum("年 龄")); /************************************************/ /* 得到dbf中指定行数和列数的值,参数从0计 */ /************************************************/ System.out.println("第3行,第2列的值是:"+dbf.getContent(2, 1)); dbf.close(); /************************************************/ /* 复制dbf文件表头部分功能 */ /************************************************/ dbf = new DBF_tool(); System.out.println("将creatDBF.dbf的文件结构复制到新的文件copy.dbf中..."); dbf.copyDBFtitle("creatDBF.dbf", "copy.dbf"); dbf.close(); System.out.println("演示结束!"); }

    5
    175
    21KB
    2008-12-04
    32
  • java模拟数据库sql操作源码,适合作中间件

    积分不多了,赚个分,大家海涵 ,这个源码学习用最佳,还可以做中间件,不用配数据库,直接可以看成一个数据库的源码,当然效率很低!有很多不足大家一起努力更正!!~~

    5
    159
    4KB
    2008-09-04
    12
  • 基于java的mp3播放器源码

    基于java的mp3播放器源码

    0
    29
    497KB
    2008-04-28
    0
  • eclipseme.feature_1.7.9_site.zip

    j2me的eclipse插件

    0
    25
    3.62MB
    2008-04-21
    0
  • eclipseme.feature_1.6.8.src.zip

    手机游戏插件~~<br>欢迎下载

    0
    83
    2.89MB
    2008-04-17
    0
上传资源赚积分or赚钱