![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java
文章平均质量分 82
waponx
不登高山,不知天之高也;不临深溪,不知地之厚也。
展开
-
简易聊天程序教程(零)简介
从本文可以学到什么?本文不会教你Java的语法,不会详细的解释所有的控件,不会教你多线程的知识。从本文中,可以获取的是一个简易的聊天程序的设计过程,在这个过程中,你可以获得是,代码的经验,使用Java的编程的一个例子。还有的就是一个简易聊天服务器的设计过程。还有,可以用这个程序来做课设:)这系列文章应该如何阅读?如果想要弄懂,建议下载源代码和本系列文章一起看。这个程序的原创 2016-05-08 22:50:42 · 793 阅读 · 0 评论 -
简易聊天程序教程(一)自定义异常和消息格式
自定义异常的目的是为了更好的表示出错的原因,能够针对不同的异常执行不同的处理。异常的自定义是简单的,只是简单的继承了Exception类。下面给出所有聊天程序的异常类的基类的ChatException的定义:package SimpleChat;public class ChatException extends Exception{ /** * */ priv原创 2016-05-09 11:03:20 · 1438 阅读 · 4 评论 -
简易聊天程序教程(二)服务器的基本功能
我设计的时候是先从服务器端开始设计的,服务器端先给出接口,然后客户端针对接口编程。在说服务器的代码之前先说说数据库的设计吧。数据的设计是简单的,只有两个表:create database SimpleChat;CREATE TABLE IF NOT EXISTS Account ( username varchar(50) NOT NULL, userpass原创 2016-05-09 11:32:12 · 1131 阅读 · 0 评论 -
简易聊天程序教程(三)服务器的多线程
如果一个服务器只能为两个用户提供服务器,那就真的是太渣了。很多时候,聊天的客户都会大于两个。因此需要提高并发量。在Java中使用多线程还是很方便的。我在这个服务器程序使用的是实现Runnable接口的方法来定义自己的多线程操作。通过重写run方法,来实现自己的多线程操作。每个线程都会有一个client成员变量,这个成员变量用来记录客户端的Socket。然后,每个线程都会使用原创 2016-05-09 15:08:12 · 984 阅读 · 0 评论 -
简易聊天程序教程(四)客户端基本功能
客户端的基本功能是根据服务器给出的接口逐步来实现的。客户端的设计流程是清晰的。简化的思考流程如下图所示:当然,实现的时候就要考虑比较多的细节,比如在注册的时候,注册失败怎么办,登陆的时候,账号密码不匹配怎么办。但总的流程就是这样子的。从上面的流程可以看出了,客户端的窗口模块分下面几个(附上动作的解析):1 登陆窗口模块: 登陆窗口需要提供两个输入框,输入原创 2016-05-09 15:33:49 · 2839 阅读 · 0 评论 -
简易聊天程序教程(五)客户端的登陆和注册窗口
其实大家也能想到,登陆和注册窗口其实很相似的,而注册窗口总是比登陆窗口多一些内容。先来说说登陆窗口。登陆窗口的界面如下图:登陆窗口继承字Dialog类,而不是继承自JFrame类。登陆窗口显示在屏幕中间,通过下面的方法就可以达到效果:setLocationRelativeTo(null);在构造函数中调用这个方法,就能显示在屏幕中央,如果参数不是null,则显示的位置与原创 2016-05-09 16:01:37 · 2263 阅读 · 0 评论 -
简易聊天程序教程(六)主窗口和聊天窗口
主窗口用的是JList控件,在显示了登陆的跟人信息之后,接下来就是好友的列表。为了方便以后拓展 ,我把好友的信息封装在FriendInformation中,FriendInformation类的定义也很简单的,都能看懂。下面来逐步分析一下MainWin类:MainWin中比较重要的是事件的监听:好友列表中的右键菜单的监听: JMenuItem item = new JMe原创 2016-05-09 17:08:42 · 2560 阅读 · 0 评论 -
MySQL的JDBC判断查询结果是否为空以及获取查询结果行数的方法
判断查询结果是否为空在JDBC中没有方法hasNext去判断是否有下一条数据,但是我们可以使用next方法来代替。看next方法的官方解释: boolean next() throws Moves the cursor forward one row from its current position. A ResultSet cursor is in原创 2016-05-09 17:31:05 · 17789 阅读 · 2 评论