课程设计项目《蓝梦教育集团即时通讯系统》(仿腾讯QQ)——完善客户端聊天信息主窗口程序类(第3部分)

合集下载

J2EE 课程设计项目《蓝梦集团客户关系管理系统(CRM)系统》实现项目中的实用工具类

J2EE 课程设计项目《蓝梦集团客户关系管理系统(CRM)系统》实现项目中的实用工具类

J2EE 课程设计项目《蓝梦集团客户关系管理系统(CRM)系统》实现项目中的实用工具类1.1.1实现项目中的实用工具类1、添加一个自定义的异常类----“统一项目中异常处理”(1)类名称为WebCRMException,继承于ng.Exception类(2)最终产生出下面的代码2、添加一个属性配置文件 systemConfig.properties(也可以采用XML文件)(1)为什么要采用配置文件?1)作用是什么?----灵活地满足变化!2)是采用*.properties还是*.xml格式3)如何对配置文件中的项目进行读写?----利用java.util.Properties类利用该配置文件,封装系统中的各个“可变的工作参数”——也就是“策略模式”中的“环境”。

(2)在项目中添加属性配置文件systemConfig.properties(3)设计该文件的内容JDBC_DBDriver_ClassName = com.mysql.jdbc.DriverJDBC_DSN_URL = jdbc:mysql://127.0.0.1:3306/bluedreamcrm JDBC_dbUserName = rootJDBC_dbUserPassWord = rootJDBC_dbcp_maxActive=10(4)如果项目采用oracle数据库的配置文件内容如下JDBC_DBDriver_ClassName = oracle.jdbc.driver.OracleDriver JDBC_DSN_URL = jdbc:oracle:thin:@localhost:1521:bluedreamcrm JDBC_dbUserName = rootJDBC_dbUserPassWord =rootJDBC_dbcp_maxActive=10注意:其中的“jdbc:oracle:thin:@localhost:1521:bluedreamcrm”中的“bluedreamcrm”为Oracle 数据库服务的ID名称,而不是数据库名称3、添加一个获得系统配置属性文件的SystemConfigInfo类(也就是策略模式中的环境类Context)(1)包名称为com.px1987.webcrm.config(2)编程该类package com.px1987.webcrm.config;import java.io.IOException;import java.io.InputStream;import java.util.Properties;import com.px1987.webcrm.exception.WebCRMException;public class SystemConfigInfo {public SystemConfigInfo()throws WebCRMException {}static Properties oneProperties=null;static{oneProperties=new Properties();InputStreampropertiesFileStream=SystemConfigInfo.class.getResourceAsStream("/systemConfig.properties");try {oneProperties.load(propertiesFileStream);} catch (IOException e) {System.out.println("在加载属性文件时程序出现了异常错误!");}}public static String getProperty (String propertiesName){return oneProperties.getProperty(propertiesName);}public static void main(String args[]){String JDBC_DBDriver_ClassName=SystemConfigInfo.getProperty("JDBC_DBDriver_ClassName");System.out.println("JDBC_DBDriver_ClassName="+JDBC_DBDriver_ClassName);}}(3)注意的问题1)其中的“private static Properties props=null;”为什么要设计为static ?(达到全局缓存)2)static语句块是在什么时候执行?3)static语句块也能够产生一种“单例”(单一对象,也就是单例设计模式)的效果(可以参考Hibernate框架所提供的HibernateUtil.java类代码)(4)Class类中的getResourceAsStream方法直接返回一个InputStream流对象getResourceAsStream方法是查找具有给定名称的资源,返回InputStream对象。

仿QQ聊天系统的数据库设计与实现_ForStudent资料

仿QQ聊天系统的数据库设计与实现_ForStudent资料

仿QQ聊天系统的数据库设计与实现假如你要构建《即时通讯系统》阅读第4部分设计你的即时通讯系统中类的关系和数据库201405221 引言数据库课程设计是指对于一个给定的应用环境,构造设计优化的数据库逻辑模式和物理结构,并据此建立数据库及其应用系统,使之能够有效地存储和管理数据,满足用户的应用需求。

信息管理要求是指在数据库中应该存储和管理哪些数据对象;数据操作要求是指对数据对象要进行哪些操作,如查询、加入、删除、修改、统计等操作。

数据库课程设计的目标是为了用户和各种应用系统提供一个信息基础设施和高效率的运行环境。

高效率的运行环境包括:数据库的存取效率、数据库存储空间的利用率、数据库系统运行管理的效率都是高的。

本次课程设计的目的是把所学的数据库的知识应用到实践中去。

现今知识已越来越受到人们的重视,仿QQ聊天系统是参考腾讯公司发布的腾讯QQ,主要运用数据库知识和C#将其初步实现[1]。

1.1课题背景现在的信息越来越发达,很多人都在使用QQ作为聊天工具,现根据腾讯公司的QQ 聊天系统制造属于自己的聊天工具,表面上看上去是仿QQ聊天系统,其实等到时机成熟可以换成别的名字,相信在不远的将来在老师和同学们的帮助下,再借助互联网,我们一定可以打造出属于自己的聊天系统。

当然系统存在着很多不足,需要老师的指点和帮助。

1.2系统需求分析QQ聊天系统是大家广泛喜欢经常应用到CS应用程序软件[2],而现在仿QQ聊天系统开发工具,是本人对其程序的深感兴趣,不但可以了解从中的业务,而且还可以加强学习,以及对知识的回顾。

同时也是尽快测试此聊天程序,以便和同学进行用自己的工具来交流聊天,由于好奇心促使和同学们一起来探讨此程序的开发,这样增强同学们之间的相互交流,相互学习。

该系统属于应用程序,需要对数据的处理,比如聊天信息要既是反馈给对方,故对数据的及时更新要求较高,保证数据的真实性.该系统在任何操作系统下都可以运行,但必须装有SQL2000数据库。

即时通讯系统设计说明书

即时通讯系统设计说明书
Key words:Instant Messager; Socket; UDP; C#
第一章
1.1
即时通讯(Instant Messenger,简称IM),是指能够即时发送和接收互联网消息等的业务。自1998年面世以来,特别是近几年的迅速发展,即时通讯的功能日益丰富,逐渐集成了电子邮件、博客、音乐、电视、游戏和搜索等多种功能。即时通讯不再是一个单纯的聊天工具,它已经发展成集交流、资讯、娱乐、搜索、电子商务、办公协作和企业客户服务等为一体的综合化信息平台。是一种终端连网即时通讯网络的服务。即时通讯不同于e-mail在于它的交谈是即时的。大部分的即时通讯服务提供了状态信息的特性──显示联络人名单,联络人是否在在线与能否与联络人交谈。
本科毕业设计(论文)说明书
即时通讯系统的设计与实现
学院计件是目前计算机用户进行交流最普遍的方式之一,各种各样的聊天软件也层出不穷;服务提供商也提供了越来越丰富的通讯服务功能。即时通信中最基本的功能就是通过计算机之间的文本数据的互换的形式实现思想的交流和沟通,它的优点是方便快捷,为人们之间创建了一种新型的、廉价的、快速的、简便的沟通方式。
关键词:即时通讯;Socket;UDP;C#
Abstract
Instant messaging software is currently one of the most common computer users to communicate the way, a variety of chat software also emerge in an endless stream; the service provider offers more and more communication services. Instant communication is the most basic function is the text data by computer are realized in the form of the exchange of ideas and communication, it has the advantage of convenience, as a new, cheap, fast, convenient way to communicate to create among the people.

即时通讯课程设计

即时通讯课程设计

《计算机应用系统(软件)》课程设计报告题目:即时通讯软件专业:计算机科学与技术班级:学号::指导教师:完成日期: 2014 年 8月 23 日一、系统需求分析 (3)➢项目名称 (3)➢开发背景 (3)1、文档说明 (3)2、实现功能 (3)3、功能说明 (3)二、系统的UML基本模型 (5)1、用例图 (5)三、数据库设计 (6)(1)E-R图 (6)(2)数据库逻辑结构 (6)1存储用户信息表Users详细信息 (6)2存储 QQ消息表Messages详细信息 (7)3存储 QQ消息类型表MessageType详细信息 (7)4存储好友表Friends详细信息 (7)5存储好友策略表FriendshipPolicy 详细信息 (8)6存储血型表bloodType 详细信息 (8)7存储星座类型表 star 详细信息 (8)8存储密码表SavePwd 详细信息 (8)三、系统运行结果(截图) (9)1、登录界面: (9)2、申请QQ界面 (9)3、忘记密码窗体 (10)4、主窗体: (10)5、修改个人信息 (11)6、查找好友界面: (12)7、聊天界面: (12)8、设置字体 (14)9、有新消息提示 (15)10、退出 (16)四、课程设计总结 (17)一、系统需求分析➢项目名称“MyQQ”聊天系统➢开发背景在当今信息化的时代,人们需要简捷快速的方式进行沟通。

用手机交流存在费用高,操作麻烦的问题。

因此开发一个基于 C/S 架构的 QQ,可解决在局域网围与好友进行便利交流,无需任何费用。

1、文档说明改文档描述了MyQQ的功能、数据库、以及ER图、等、让用户可以大体的了解该软件安的功能。

2、实现功能01 注册QQ号02 登录到主界面03 登录后可以显示好友列表、QQ头像、未查看的消息04 可以通过性别、年龄、QQ号查询好友,并添加好友05 编辑个人的信息、修改密码、设置添加好友的模式06 可以与好友进行实时聊天07 头像列表、可以从100个头像里面选择自己喜欢的。

软件工程专业《面向对象编程与设计(Java)》期末项目实训大作业——蓝梦教育集团课程选课系统(6)

软件工程专业《面向对象编程与设计(Java)》期末项目实训大作业——蓝梦教育集团课程选课系统(6)

某软件学院软件工程专业《面向对象编程与设计(Java)》期末项目实训大作业——蓝梦教育集团课程选课系统(6)1.1.1蓝梦教育集团课程选课系统1、任务要求利用在“面向对象编程与设计(Java)”的8周课程所学习到各个方面的知识设计并实现一个C/S架构的J2SE的应用程序(应用Matisse4MyEclipse设计Swing GUI的窗口界面)作为本课程的结课后的项目大作业,该作业的成绩也将作为本课程的结课时的考试成绩(由于本课程是开发类的技术课程,不进行常规的闭卷考试),希望大家加以重视。

2、系统需求分析(1)项目的背景某著名教育企业蓝梦教育集团(Blue Dream Group),为了能够在中国迅速地开展与教育产品和IT技能培训有关的各个方面的业务、并期望能够取得比较好的效益和提高各项教育产品的质量以迎接新的挑战,需要全面地提升本土化的信息化项目建设的进度、拟计划开发出蓝梦教育集团课程选课系统,提高教学管理的工作效率,和使选课管理工作规范化、系统化、程序化,避免选课管理的随意性,提高信息处理的速度和准确性,并使得学生能够及时、准确、有效地查询和修改选课情况。

(2)系统目标本项目要求开发出蓝梦教育集团课程选课系统,提高教学管理的工作效率,和使选课管理工作规范化、系统化、程序化,避免选课管理的随意性,提高信息处理的速度和准确性,并使得学生能够及时、准确、有效地查询和修改选课情况。

(3)用户的特点使用本系统的主要人员是学生和老师,除此之外还有普通的人员。

而学生是一群积极向上,努力进取的未来人才,接受新知识的能力强大,根据界面的指示工作可以充分的操作本选课系统。

老师主要是针对学生的选课结果进行查看,然后执行相关的操作。

系统设计应考虑到结果的易查,易看的特性,方便老师操作。

访客是普通的人员,有些内容的查看会受到相应的限制。

本系统是使用是间歇性的,一般是在每年的8-9月份向学生开放的。

其它时间可对系统进行相应的维护,维护人员一般涉及到系统开发人员以及专门的测试人员。

毕业设计即时通讯系统设计说明书

毕业设计即时通讯系统设计说明书
总的说来,国外关于即时通讯的研究还不够系统和深入。
1.3
聊天软件作为使用最为广泛的即时性通讯工具,它在拥有文字聊天基础功能的同时,为满足用户的需求,还增加了文件传输的功能,成为现在最为主流的网上应用软件。本论文主要对聊天软件的文字聊天、文件传输功能进行分析与研究,总结出实现的相关理论与知识。
本课题主要研究容包括以下几个方面:
2.3.5 Socket 技术6
2.3.6TCP/IP 协议6
2.3.7 Client/Server 结构(客户端/服务器模式)7
2.4 本章小结7
第三章 数据库设计8
3.1SQL Server数据库介绍8
3.2 理论基础8
3.3 数据库E-R图9
3.4数据库设计9
3.4.1 数据库逻辑设计9
3.4.2 数据库物理设计10
本科毕业设计(论文)说明书
即时通讯系统的设计与实现
学院计算机工程学院
专业班级09软件工程1班
摘 要
即时通讯软件是目前计算机用户进行交流最普遍的方式之一,各种各样的聊天软件也层出不穷;服务提供商也提供了越来越丰富的通讯服务功能。即时通信中最基本的功能就是通过计算机之间的文本数据的互换的形式实现思想的交流和沟通,它的优点是方便快捷,为人们之间创建了一种新型的、廉价的、快速的、简便的沟通方式。
2.1.1 系统包含的功能
本聊天系统需包含如下基本功能:
(1)客户端的主要功能:
用户注册
用户登录
添加好友
获取好友列表
与好友聊天
发送表情功能
文件传输
(2)服务器端的主要功能:
启动服务
建立连接
监听客户请求
2
聊天工具由服务器端和客户端组成,要分析清楚两方面所要完成的任务,对设计来说,等于完成了一半。根据聊天的通信步骤,系统的功能模块如图2-1所示。

软件工程课程设计—模拟QQ聊天系统

退出信息 模拟QQ聊天 用户
退出
下线消息
聊天记录 存储聊天记录
其他用户
聊天记录
后台数据库个人 信息更新
模拟QQ聊天用户 用户登陆 存储用户ID
后台信息数据库检索
登陆消息正确 聊天
登陆消息错误
模拟QQ聊天新用户 用户申请
后台数据库检索
申请消息正确 生成新账号
申请消息错误
模拟QQ聊天用户
聊天
转发
检验转发内容的合 法性
昵称=1{数字或字符}20 密码=1{数字或字符}20 确认密码=1{数字或字符}20 性别={男或女} 备注=0{数字或字符}300 位置:申请处理,服务器处理
名字:转发信息 定义:转发信息=转 发用户账号+转发信 息内容
转发用户账 号=1{数字或字符}20 位置:转发处理
登录信息
存储用户ID 登录信息
模拟QQ聊天 用户
登陆








服务器处理








后台信息数据 库检索
登陆信息及系 统消息等
聊天处理
申请信息
模拟QQ聊天新 用户
申请



新账号消息

服务器处理
新账号消息
模拟QQ聊天新 用户
申请信息
新账号消息
检索合法后的 申请信息
生成账号处理
后台信息数据 库检索
新账号消息
退出信息 聊天处理




密码
账号 密码
服务器
信息数据库
系统信息 库
转发 用户 帐号

J2EE 课程设计项目——蓝梦商业集团客户关系管理(CRM)系统需求定义

J2EE 课程设计项目——蓝梦商业集团客户关系管理(CRM)系统需求定义1.1.1CRM系统的基本需求1、蓝梦商业集团CRM系统中的部分子系统的部分功能性需求本系统不仅提供有客户管理、产品管理、订单管理和合同管理,也还包括有市场管理、销售管理、服务管理等方面的扩展功能。

下图为本系统中的主要功能模块和子功能项目说明:其中的客户信息管理主要记录客户基本信息、客户联系人、交往记录、客户设置和竞争产品等方面的信息,客户信息是企业利润的部分来源。

由于客户信息自身的特点,进行科学的客户信息管理是信息加工、信息挖掘、信息提取和再利用的需要。

通过对客户信息的有效管理,可以最终实现客户信息利用的最大化和最优化。

产品管理中的产品信息主要:包括产品名称、价目表、产品供应商、产地和产品分类等信息,产品模块主要管理本公司所销售或生产的产品档案信息,使用户可以清楚的看到产品的分布、用户可以快速的通过产品分类找到产品。

而订单管理中的订单信息记录了所需产品、客户方面的详细信息,订单管理是客户关系管理的有效延伸,能更好的把个性化、差异化服务有机的融入到客户管理中去,能推动经济效益和客户满意度的提升。

企业商业合同管理的完善是企业健康经营的一个重要标志,本系统中的合同管理将客户管理和产品管理也融合到合同管理中,真正体现优化企业资源的目的。

高效的合同管理不但提高了工作效率,也大大节约了办公成本,进一步提高企业服务和管理的质量,规范了合同管理工作,防范了经营风险,减少了因合同管理不当而造成的损失,为企业带来社会与经济双重的效益。

下面介绍主要的子系统的功能。

(1)销售信息管理和分析子系统销售管理系统主要用来处理与企业的销售活动相关的业务内容,比如与客户签订销售订单、发货、办理出库、退货、收取销售货款等,而且还可以处理应收款、预收款以及现收款等往来款业务。

通过销售订单的录入与变更,最终跟踪和管理销售情况。

在销售信息管理子系统中还包括有产品信息的管理,而产品信息管理是产品市场分析的基础,也是从不同侧面进行产品个性化分析的出发点。

软件工程专业《面向对象编程与设计(Java)》期末项目实训大作业——蓝梦教育集团课程选课系统(1)

某软件学院软件工程专业《面向对象编程与设计(Java)》期末项目实训大作业——蓝梦教育集团课程选课系统(1)1.1.1蓝梦教育集团课程选课系统1、任务要求利用在“面向对象编程与设计(Java)”的8周课程所学习到各个方面的知识设计并实现一个C/S架构的J2SE的应用程序(应用Matisse4MyEclipse设计Swing GUI的窗口界面)作为本课程的结课后的项目大作业,该作业的成绩也将作为本课程的结课时的考试成绩(由于本课程是开发类的技术课程,不进行常规的闭卷考试),希望大家加以重视。

2、系统需求分析(1)项目的背景某著名教育企业蓝梦教育集团(Blue Dream Group),为了能够在中国迅速地开展与教育产品和IT技能培训有关的各个方面的业务、并期望能够取得比较好的效益和提高各项教育产品的质量以迎接新的挑战,需要全面地提升本土化的信息化项目建设的进度、拟计划开发出蓝梦教育集团课程选课系统,提高教学管理的工作效率,和使选课管理工作规范化、系统化、程序化,避免选课管理的随意性,提高信息处理的速度和准确性,并使得学生能够及时、准确、有效地查询和修改选课情况。

(2)项目目标本项目要求开发出蓝梦教育集团课程选课系统,提高教学管理的工作效率,和使选课管理工作规范化、系统化、程序化,避免选课管理的随意性,提高信息处理的速度和准确性,并使得学生能够及时、准确、有效地查询和修改选课情况。

(3)用户的特点使用本系统的主要人员是学生和老师,除此之外还有普通的人员。

学生是一群积极向上,努力进取的未来人才,接受新知识的能力强大,根据界面的指示工作可以充分的操作本选课系统。

老师主要是针对学生的选课结果进行查看,然后执行相关的操作。

系统设计应考虑到结果的易查,易看的特性,方便老师操作。

访客是普通的人员,有些内容的查看会受到相应的限制。

本系统是使用是间歇性的,一般是在每年的8-9月份向学生开放的。

其它时间可对系统进行相应的维护,维护人员一般涉及到系统开发人员以及专门的测试人员。

课程设计任务书--即时聊天系统

《JAVA程序设计》课程设计任务书--即时聊天系统一、课程设计任务与目的本课程设计要求学生对《即时聊天系统》进行分析、设计及编程实现。

要求该系统实现服务器端和客户端功能,可以在企业内部网络和互联网上运行。

可以和好友进行交流,信息即时发送,即时回复,传输文件等功能。

界面友好。

本课程设计对课程设计项目已经作了较为详细的分析及相关知识讲解,通过课程设计,促使学生专业技能得到综合训练,让学生了解软件开发基本技术和工作过程。

同时,本课程设计中将会让学生了解JAVA程序设计中一些高级技术。

通过本系统的开发,同学门要了解软件开发的整个过程,掌握软件开发的基本方法,提前培养同学们从事软件行业应具备的基本素质和能力,为以后的学习作一个铺垫。

二、系统开发步骤软件开发一般有以下步骤:1. 问题定义2. 可行性研究3. 需求分析4. 总体设计5. 详细设计6. 编码及单元测试7. 综合测试8. 软件维护其中1、2、3步可以整合为调研分析阶段,4、5、6、7步可以整合为项目实施阶段。

根据本次课程设计的实际情况,我们着重进行系统设计和编码实施。

该阶段主要工作有:1.系统结构的总体设计决定系统的总体结构,包括整个系统分哪些部分,各部分之间有什么联系以及已确定的需求对这些组成部分如何分配等方面。

2.数据结构定义定义软件处理的对象——类,定义数据处理流程。

3.详细设计对各功能模块的功能定义,说明模块之间的调用关系与接口(参数)。

4.编码及调试根据详细设计的要求,按照统一的要求和编码规范,用JAVA语言编码实现,同时负责每个模块的独立调试。

5.综合测试软件开发的后期是软件装配和综合测试。

软件测试一般有专业的测试人员,同时通过发布使用试用版(体验版)等方式让用户体验、测试。

在多次测试改进后,才正式发布。

三、系统功能需求描述1.客户端注册新用户功能。

2.客户登录功能。

3.添加/删除好友功能。

4.消息收发功能。

5.好友上下线提示。

6.用户基本信息管理。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

J2EE课程设计实训教学示例项目《蓝梦教育集团即时通讯系统》(仿腾讯QQ)——完善客户端聊天信息主窗口程序类(第3部分)1.1.1完善客户端聊天信息主窗口类ChatMainFrame中的各个事件类1、ChatMainFrame_ActionListenerEventHandler(1)类名称为ChatMainFrame_ActionListenerEventHandler,包名称为com.px1987.imsystem.client.frame.chatframe.event,实现java.awt.event.ActionListener接口(2)编程该事件类package com.px1987.imsystem.client.frame.chatframe.event;import java.awt.Color;import java.awt.Font;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import ng.reflect.InvocationTargetException;import ng.reflect.Method;import javax.swing.ImageIcon;import javax.swing.JColorChooser;import javax.swing.text.BadLocationException;import javax.swing.text.SimpleAttributeSet;import javax.swing.text.StyleConstants;import javax.swing.text.StyledDocument;import com.px1987.imsystem.client.dialog.FontChooserDialog;import com.px1987.imsystem.client.exception.IMSystemException;import com.px1987.imsystem.client.factory.GenericTypeMethodsFactory;import com.px1987.imsystem.client.frame.chatframe.panel.ChatMainFrame_CenterInfoPanel; import com.px1987.imsystem.client.frame.floatwindow.SelectUserFaceWindow;importcom.px1987.imsystem.client.httpclient.inter.HttpClientMessageInfoRequestResponseInterface; import com.px1987.imsystem.client.util.DateAndTimeUtil;import com.px1987.imsystem.client.util.IMSystemClientUtils;import com.px1987.imsystem.client.xmlparse.ParseXMLConfFileAllTags;import com.px1987.imsystem.serializableVO.MessageInfoVO;public class ChatMainFrame_ActionListenerEventHandler implements ActionListener { private ChatMainFrame_CenterInfoPanel eventSourceContainer = null;private String eventHandlerMethodName = null;public ChatMainFrame_ActionListenerEventHandler() {super();}public ChatMainFrame_ActionListenerEventHandler(ChatMainFrame_CenterInfoPanel eventSourceContainer,String eventHandlerMethodName) {super();this.eventSourceContainer = eventSourceContainer;this.eventHandlerMethodName = eventHandlerMethodName;}@SuppressWarnings("unchecked")public void actionPerformed(ActionEvent actionEventObject) {Class currentEventHandlerClass = this.getClass();Method eventHandlerMmethod = null;try { //获得事件处理方法eventHandlerMmethod = currentEventHandlerClass.getMethod(this.eventHandlerMethodName, new Class[] {actionEventObject.getClass()});} catch (SecurityException exception) {exception.printStackTrace();System.out.println("出现了SecurityException异常错误,错误信息为:" +exception.getMessage());} catch (NoSuchMethodException exception) {exception.printStackTrace();System.out.println("出现了NoSuchMethodException异常错误,错误信息为:" + exception.getMessage());}try { //调用指定的事件处理方法eventHandlerMmethod.invoke(this, new Object[] {actionEventObject});} catch (InvocationTargetException exception) {exception.printStackTrace();System.out.println("出现了InvocationTargetException异常错误,错误信息为:" + exception.getMessage());} catch (IllegalArgumentException exception) {exception.printStackTrace();System.out.println("出现了IllegalArgumentException异常错误,错误信息为:" + exception.getMessage());} catch (IllegalAccessException exception) {exception.printStackTrace();System.out.println("出现了IllegalAccessException异常错误,错误信息为:" + exception.getMessage());}}public void closeThisFrameButton_onClick(ActionEvent e) {eventSourceContainer.getOneChatMainFrame().dispose();eventSourceContainer.getOneChatMainFrame().setVisible(false);}public void sendMessageButton_onClick(ActionEvent e) {String messageContent=eventSourceContainer.getSendInfoTextPane().getText();if((messageContent.equals("")||(messageContent.length()==0))){return; //如果本次没有真正输入聊天信息的内容,则不进行发送}// MessageInfoVO returnMessageInfoVO=null;String sendMessageTime=DateAndTimeUtil.getHourMinuteSecondString();StringmessageSender=IMSystemClientUtils.getUserLoginOnLineInfoVOInstance().getUserAliaoName ()+"("+IMSystemClientUtils.getUserLoginOnLineInfoVOInstance().getUserIMCode()+")";StringmessageReceiver=eventSourceContainer.getOneFindFriendInfoVO().getUserAliaoName()+"("+ eventSourceContainer.getOneFindFriendInfoVO().getUserIMCode()+")";MessageInfoVO oneMessageInfoVO=new MessageInfoVO();oneMessageInfoVO.setSendMessageTime(sendMessageTime);oneMessageInfoVO.setMessageContent(messageContent);oneMessageInfoVO.setMessageSender(messageSender);oneMessageInfoVO.setMessageReceiver(messageReceiver);StringhttpClientMessageInfoRequestResponseeClassName=ParseXMLConfFileAllTags.getProperty("h ttpClientMessageInfoRequestResponse.className");HttpClientMessageInfoRequestResponseInterface oneHttpClientMessageInfoRequest=null;try {oneHttpClientMessageInfoRequest =new GenericTypeMethodsFactory().newSomeOneInstance(httpClientMessageInfoRequestResponsee ClassName); //利用范型工厂方法直接获得目标对象实例}catch (IMSystemException exception) {exception.printStackTrace();System.out.println("出现了OASystemException异常错误,错误信息为:"+exception.getMessage());}try {// returnMessageInfoVO = oneHttpClientMessageInfoRequest.doSendMessageInfo(oneMessageInfoVO);oneHttpClientMessageInfoRequest.doSendMessageInfo(oneMessageInfoVO);} catch (IMSystemException exception) {exception.printStackTrace();System.out.println("出现了OASystemException异常错误,错误信息为:" +exception.getMessage());}eventSourceContainer.getSendInfoTextPane().setText("");String oneMessageText=sendMessageTime+" "+messageSender+"对"+messageReceiver+"说:"+ "\n ";//下面的代码设置标题为粗体样式SimpleAttributeSet oneSimpleAttributeSet = new SimpleAttributeSet();StyleConstants.setBold(oneSimpleAttributeSet, true);StyledDocumentchatResultTextPaneDocument=eventSourceContainer.getChatResultTextPane().getStyledDocume nt();try {chatResultTextPaneDocument.insertString(chatResultTextPaneDocument.getLength(),oneMessageText,oneSimpleAttributeSet);} catch (BadLocationException exception) {exception.printStackTrace();System.out.println("出现了BadLocationException异常错误,错误信息为:" + exception.getMessage());}chatResultTextPaneDocument=eventSourceContainer.getChatResultTextPane().getStyledDoc ument();try {chatResultTextPaneDocument.insertString(chatResultTextPaneDocument.getLength(),messageContent+"\n",eventSourceContainer.getSendInfoTextPane().getParagraphAttributes());} catch (BadLocationException ex) {}}public void chooseFaceButton_onClick(ActionEvent e) {int floatPanelWidth = 436;int floatPanelHeight = 320;SelectUserFaceWindow oneSelectUserFaceWindow =new SelectUserFaceWindow(eventSourceContainer.getOneChatMainFrame(),floatPanelWidth, floatPanelHeight);oneSelectUserFaceWindow.openThisWindow();}Color chatMessageForegroundColor = Color.BLACK;public void setupForegroundColorButton_onClick(ActionEvent e) {Color userSelectColor =JColorChooser.showDialog(eventSourceContainer.getOneChatMainFrame(),"请选择您的文字的颜色",Color.black);if (userSelectColor != null) {chatMessageForegroundColor = userSelectColor;}SimpleAttributeSet oneSimpleAttributeSet = new SimpleAttributeSet();StyleConstants.setForeground(oneSimpleAttributeSet,chatMessageForegroundColor);eventSourceContainer.getSendInfoTextPane().setCharacterAttributes(oneSimpleAttributeSet, false); //不覆盖其他的属性项目}public void insertImageFileButton_onClick(ActionEvent e) {String userSelectedImageFileName = null;userSelectedImageFileName = eventSourceContainer.getSelectedImageFile();eventSourceContainer.insertImageFileToSendInfoTextPane(new ImageIcon(userSelectedImageFileName));}public void returnKeySendMessageMenuItem_onClick(ActionEvent e) {}public void ctrlAndReturnKeySendMessageMenuItem_onClick(ActionEvent e) {}public void messagePatternMenuItem_onClick(ActionEvent e) {}public void selfDefineFontButton_onClick(ActionEvent e) {FontChooserDialog oneFontChooserDialog=new FontChooserDialog(null,true,null); //参数true代表为模式对话框oneFontChooserDialog.setAlwaysOnTop(true);oneFontChooserDialog.setVisible(true);Font returnUserSelectedFont=oneFontChooserDialog.getUserSelectFontInThisDialog();SimpleAttributeSet oneSimpleAttributeSet = new SimpleAttributeSet();StyleConstants.setFontFamily(oneSimpleAttributeSet, returnUserSelectedFont.getFamily());StyleConstants.setFontSize(oneSimpleAttributeSet, returnUserSelectedFont.getSize());if(returnUserSelectedFont.isBold()){StyleConstants.setBold(oneSimpleAttributeSet, true);}else if(returnUserSelectedFont.isItalic()){StyleConstants.setItalic(oneSimpleAttributeSet, true);}else if(returnUserSelectedFont.isPlain()){StyleConstants.setBold(oneSimpleAttributeSet, false);StyleConstants.setItalic(oneSimpleAttributeSet, false);}else if((returnUserSelectedFont.isBold())&&(returnUserSelectedFont.isItalic())){ StyleConstants.setBold(oneSimpleAttributeSet, true);StyleConstants.setItalic(oneSimpleAttributeSet, true);}eventSourceContainer.getSendInfoTextPane().setCharacterAttributes(oneSimpleAttributeSet, false); //不覆盖其他的属性项目}}2、ChatMainFrame_ItemListenerEventHandler(1)类名称为ChatMainFrame_ItemListenerEventHandler,包名称为com.px1987.imsystem.client.frame.chatframe.event,实现java.awt.event.ItemListener接口(2)编程该事件类package com.px1987.imsystem.client.frame.chatframe.event;import java.awt.event.ItemEvent;import java.awt.event.ItemListener;import ng.reflect.InvocationTargetException;import ng.reflect.Method;import javax.swing.text.SimpleAttributeSet;import javax.swing.text.StyleConstants;import com.px1987.imsystem.client.frame.chatframe.panel.ChatMainFrame_CenterInfoPanel; public class ChatMainFrame_ItemListenerEventHandler implements ItemListener { private ChatMainFrame_CenterInfoPanel eventSourceContainer = null;private String eventHandlerMethodName = null;public ChatMainFrame_ItemListenerEventHandler() {super();}public ChatMainFrame_ItemListenerEventHandler(ChatMainFrame_CenterInfoPaneleventSourceContainer, String eventHandlerMethodName) { super();this.eventSourceContainer = eventSourceContainer;this.eventHandlerMethodName = eventHandlerMethodName;}@SuppressWarnings("unchecked")public void itemStateChanged(ItemEvent itemEventObject) {Class currentEventHandlerClass = this.getClass();Method eventHandlerMmethod = null;try { //获得事件处理方法eventHandlerMmethod = currentEventHandlerClass.getMethod(this.eventHandlerMethodName, new Class[] {itemEventObject.getClass()});} catch (SecurityException exception) {exception.printStackTrace();System.out.println("出现了SecurityException异常错误,错误信息为:" +exception.getMessage());} catch (NoSuchMethodException exception) {exception.printStackTrace();System.out.println("出现了NoSuchMethodException异常错误,错误信息为:" + exception.getMessage());}try { //调用指定的事件处理方法eventHandlerMmethod.invoke(this, new Object[] {itemEventObject});} catch (InvocationTargetException exception) {exception.printStackTrace();System.out.println("出现了InvocationTargetException异常错误,错误信息为:" + exception.getMessage());} catch (IllegalArgumentException exception) {exception.printStackTrace();System.out.println("出现了IllegalArgumentException异常错误,错误信息为:" + exception.getMessage());} catch (IllegalAccessException exception) {exception.printStackTrace();System.out.println("出现了IllegalAccessException异常错误,错误信息为:" +exception.getMessage());}}public void fontColorFormatButton_itemStateChanged(ItemEvent e) {if(eventSourceContainer.getSendMessageToolBar().getFontColorFormatButton().isSelected()) { eventSourceContainer.getCenterDownButtonPanel().add(eventSourceContainer.getFontSetupToolBar(),java.awt.BorderLayout.SOUTH);} else {eventSourceContainer.getCenterDownButtonPanel().remove(eventSourceContainer.getFontSetupToolBar());}eventSourceContainer.invalidate();eventSourceContainer.repaint();eventSourceContainer.validate();}public void fontSizeJComboBox_ItemListener(ItemEvent e) {int fontSize = Integer.parseInt( (String) eventSourceContainer.getFontSetupToolBar().getFontSizeJComboBox().getSelectedItem());SimpleAttributeSet oneSimpleAttributeSet = new SimpleAttributeSet();StyleConstants.setFontSize(oneSimpleAttributeSet, fontSize);eventSourceContainer.getSendInfoTextPane().setCharacterAttributes(oneSimpleAttributeSet, false); //不覆盖其他的属性项目}public void fontNameJComboBox_ItemListener(ItemEvent e) {String fontName = (String) eventSourceContainer.getFontSetupToolBar().getFontNameJComboBox().getSelectedItem();SimpleAttributeSet oneSimpleAttributeSet = new SimpleAttributeSet();StyleConstants.setFontFamily(oneSimpleAttributeSet, fontName);eventSourceContainer.getSendInfoTextPane().setCharacterAttributes(oneSimpleAttributeSet, false); //不覆盖其他的属性项目}/*在JTextPane中常用到属性类:SimpleAttributeSet和StyleConstant。

相关文档
最新文档