一、背景描述
完成网络、线程、IO后,可以开始部署该项目。
二、二、实现要求
模仿QQ,实现简单的qq功能:注册、登陆、查找好友、聊天功能。服务端还需实现配置文件设置、用户管理、日志显示的功能。
三、三、实现技术
a) 使用多线程进行多个客户端和服务端的连接。
b) 使用文件方式保存用户信息。
c) 使用对象的方式在服务端和客户端之间传递信息。
d) 熟练使用JTable、JList的model、CellRendener等模型。
四、四、类图
a)类图
a) b)类图说明
类名称 |
JQServer |
|
类描述 |
服务端主程序类。 |
|
包描述 |
server |
|
函数描述 |
public static void main(String[] args) |
加载字体,弹出程序界面。 |
类名称 |
Server |
|
类描述 |
JavaQQ服务端类。 完成的功能:1.系统服务 2.系统配置 3.用户管理 4.在线用户 5.日志管理 6.关于 |
|
包描述 |
server.frm |
|
函数描述 |
public Server() |
JavaQQ服务端类。 |
public void stateChanged(ChangeEvent e) |
选项卡面板修改时触发事件。 |
类名称 |
ConfigPane |
|
类描述 |
系统配置类。 完成的功能:1.端口配置。 2.要屏蔽的JQ号 3.生成的JQ号的位数,最小位和最大位 4.是否自动备份日志、自动删除日志的天数 5.数据方式选择1.文件方式2.数据库方式(连接参数、用户名、密码、解码集) |
|
包描述 |
server.frm.panes |
|
函数描述 |
public ConfigPane(Properties prop) |
系统配置面板构造函数。 |
private void init() |
初始化面板。 |
|
public void actionPerformed(ActionEvent e) |
保存按钮、回复缺省值按钮等的事件。 |
|
private void setDataWay(boolean b) |
设置数据保存方式。 |
|
public void getProp(Properties prop) throws Exception |
获取系统的配置文件 |
|
public void setProp() throws IOException |
保存配置文件。 |
|
内部类 |
private class MyJLalel extends JLabel |
根据需要定制的JLabel |
public MyJLalel(String text,int width) |
设置内容为text,宽度为width的一些已设置好的JLabel |
|
public MyJLalel(String text) |
设置内容为text,高度为20的一些已设置好的JLabel |
|
内部类 |
private class MyJTextField extends JTextField |
根据需要定制的JTextField |
public MyJTextField() |
缺省170宽的JTextField |
|
public MyJTextField(int width) |
设置指定宽度的JTextField |
类名称 |
FillWidth |
|
类描述 |
仅仅为了填充BorderLayout的宽度 |
|
包描述 |
server.frm.panes |
|
函数描述 |
public FillWidth(int width,int height) |
按照指定宽度和高度的JPanel |
类名称 |
LogPane |
|
类描述 |
日志显示类。 |
|
包描述 |
server.frm.panes |
|
函数描述 |
public LogPane() |
日志面板构造函数。 |
public JTextArea getAreaLog() |
获取日志。 |
|
private void init() |
初始化面板。 |
|
public void actionPerformed(ActionEvent e) |
查看所有日志的事件。当前事件似乎未在Windows平台实现,其他平台未测试。Desktop类似乎未发生作用。 |
类名称 |
OnlinePane |
|
类描述 |
在线用户面板。 |
|
包描述 |
server.frm.panes |
|
函数描述 |
public OnlinePane() |
在线用户面板构造函数。 |
private void init() |
初始化添加组件。 |
|
public void actionPerformed(ActionEvent e) |
广播消息按钮、刷新按钮、查询按钮的事件。 |
|
public void run() |
|
|
public void flushOnlineUser() |
刷新当前在线用户。 |
|
private void QueryOnlineUser(String query,int type) |
根据查询类型查询在线用户 |
|
private void addUserToTable(User user) |
向table中添加用户 |
|
内部类 |
private class QueryWay |
查询方式。 |
内部类 |
private class MyDefaultTableModel extends DefaultTableModel |
自己定制的DefaultTableModel |
内部类 |
private class BroadcastWindow extends JDialog implements WindowFocusListener,ActionListener |
广播窗体类。 |
类名称 |
ServecieProcessBar |
|
类描述 |
来回滚动条类。 |
|
包描述 |
server.frm.panes |
|
函数描述 |
public ServecieProcessBar(int width,int height) |
按照指定的宽度和高度构造一个来回的滚动条。 |
public void actionPerformed(ActionEvent e) |
来回滚动事件。 |
|
|
public void paint(Graphics g) |
滚动条的绘制 |
|
public void startRoll() |
开始滚动滚动条 |
|
public void stopRoll() |
停止滚动滚动条。 |
类名称 |
ServicePane |
|
类描述 |
系统服务面板类。 完成功能:系统的启动与停止 用户的连接日志显示。 |
|
包描述 |
server.frm.panes |
|
函数描述 |
public ServicePane() |
系统服务构造函数。 |
public void initProp() |
初始化配置文件。 |
|
public void actionPerformed(ActionEvent e) |
启动按钮、停止按钮的事件。 |
|
border-width: 0px 1pt 1pt 0px; border-style: none solid solid none; border-color: #000000 windowtext windowtext #000000; padding: 0cm 5.4pt; width: 189pt; b
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
||
返回顶楼 | ||
发表时间:2013-02-10
类似的太多了。如果能直接把跨网段的语音视频通过java实现,会更好!
|
||
返回顶楼 | ||