随笔分类 - Java在线聊天项目
摘要:在线聊天项目结构图: 多用户登陆效果图: 多用户聊天效果图: 数据库效果图: 重新构建了Server类,使用了Gson方法,通过解析Json字符串,增加Info类,简化判断过程。 Server类代码如下: 新增的工具类Info,通过info对象的get方法把获得服务端得到的各种字符串直接归类了。 I
阅读全文
摘要:解决完毕后效果图: 好友列表Vector添加的时候进行判断,如果有相同的则不添加 int flag=0; for (int i = 0; i < names.size(); i++) { if (name.equals(names.get(i))) { flag=1; } } if(flag==0)
阅读全文
摘要:设计好友列表框功能,思路—— 1、当客户端成功登陆后,则客户端把成功登陆信息发送给服务端, 2、由服务端将接收到来自各个成功登陆的客户端的用户信息添加进好友列表, 3、每当有成功登陆的用户就向各个客户端发送完整好友列表 4、好友列表窗要一直死循环着等待接收服务端不断发来的好友列表信息 注意:登陆窗退
阅读全文
摘要:登录框消失语句 dispose(); 好友列表窗出现 使用new FriendsFrame(phone,s); 登陆对话框代码修改如下:
阅读全文
摘要:实现效果图: eclipse项目中初步整合之前的各个客户端和服务端的窗口与工具类,效果如下图: 已将注册服务器线程RegServer功能放到LoginServer中,使用客户端与服务端的request请求机制,根据请求是注册还是登录,分别进行相应response,客户端根据相应内容判断下一步操作。
阅读全文
摘要:LoginDialog类的代码修改如下:
阅读全文
摘要:增加的菜单栏效果图如下: eclipse 中调整到 swt的design视图下 控件区域选择Menu Controls 将Menu Bar拖动到窗口标题栏 将Cascaded Menu拖动到Menu Bar 依次将多个Menu Item加入到New SubMenu Separator是分隔符 也可以
阅读全文
摘要:点击下图注册按钮,出现注册用户面板,把手机号和判断相同的密码添加到MySQL数据库中 工作原理: 与单机的软件不同,这个聊天的登录框不能把注册信息直接添加进数据库 而是应当把注册信息发送到服务器 当服务器接收到注册信息后,在服务端把注册信息添加进数据库 首先,做连接数据库的准备 连接数据库需要一个连
阅读全文
摘要:设计的聊天窗口如下: 制作过程: 首先,在默认的BorderLayout视图下, 上边也就是North处添加一个JPanel,将Layout调整为BorderLayout,West放一个JLabel用来放照片, Center再放一个JPanel,布局调整为BorderLayout,Center和So
阅读全文
摘要:熟练使用各种布局方式 FlowLayout 流布局 left center right等 BorderLayout 边框布局 east west sorth north center AbsoluteLayout 绝对布局或空布局 任意拖拽 可以使用各种布局的嵌套效果,达到需要的目标 布局后可以在基
阅读全文
摘要:登录框注册按钮点击改变窗口大小——出现注册面板 首先用swt可视化设计登录窗口如下图: 此时窗口高度为578 没点击注册时高度为301(可自己定) 注意:注册用户的Jpanel 的border选择Title Border,title属性是“注册用户” 布局Layout选择Absolute Layou
阅读全文
摘要:SWT成功激活后 new一个JDialog 调整到Design视图 默认的视图模式是BorderLayout,无论你怎么拖拽,只能放到东西南北中的位置上 所以,我们把视图模式调整为AbsoluteLayout,这样我们可以把小控件拖拽到任意我们需要的位置 发现,这个窗口的皮肤不是很好看,文本框和按钮
阅读全文
摘要:补充聊天项目功能,做如下需求分析: 梳理项目开发所需的必要Java知识基础 GUI将使用更快速的swt实现 SWT(Standard Widget Toolkit) Standard Widget Toolkit是一个开源的GUI编程框架,与AWT/Swing有相似的用处,著名的开源IDE-ecli
阅读全文
摘要:异常一 只开启一个客户端,输入信息后关闭,客户端出现如下异常 根据异常说明 ChatClientFrame客户端117行 提示原因是Socket关闭 分析原因 客户端代码 while (connected) { String str = dis.readUTF(); 当窗口关闭后,Socket已经关
阅读全文
摘要:客户端要不断接收服务端发来的信息 与服务端不断接收客户端发来信息相同,使用线程的方法,在线程中循环接收 客户端修改后代码如下: 同时也修改了,原来直接在窗口中调数据天加进窗口 而是接收到服务端信息后再放到JTextArea中 服务端窗口代码与上一版本基本没有改动,代码如下: 0.9版功能已经基本完善
阅读全文
摘要:迭代器的方式会产生锁定 服务器端增加发送给每个客户端已收到信息的功能 所以当获取到一个socket,并打开它的线程进行循环接收客户端发来信息时,我们把这个内部类的线程Client保存到集合List<Client>中 然后在读取到客户端信息后,把这个信息发送给所有端口 通过循环 for(int i=0
阅读全文
摘要:问题的原因是 while(connected) { String str=dis.readUTF(); System.out.println(str); } 不断循环执行,一直在死循环获取socket发送的信息, 使得前面的语句 s = ss.accept(); connected=true; 服务
阅读全文
摘要:服务端对try catch finally重新进行了定义,当发生异常,主动提示,或关闭出现异常的socket 服务器端代码修改如下: 客户端换了一个OutputStream,使用DataOutputStream发送信息,dos.writeUTF(tf.getText()); 0.6版效果图 客户端代
阅读全文
摘要:没有解决问题之前客户端代码: 没有解决问题之前服务端代码: 演示过程 出现问题: java.net.SocketException: Socket is closed 如果不关闭流 把这句删掉bw.close(); 是可以的,程序不会出错,但总要关闭,可以在客户端窗口关闭的时候执行这句。 继续运行发
阅读全文
摘要:建一个服务端类ChatServer,用于设置端口接收连接 客户端修改代码如下: 先把服务端类ChatServer运行 再运行客户端类ChatClientFrame2 运行 分别查看服务器端运行结果如下: 客户端运行结果如下: 客户端窗口打开时,光标位置
阅读全文