
Netty 仿QQ聊天室(实战二)
发布日期:2021-05-06 17:50:21
浏览次数:18
分类:精选文章
本文共 3603 字,大约阅读时间需要 12 分钟。
Netty 聊天器(百万级流量实战二):仿QQ客户端
疯狂创客圈 Java 分布式聊天室【 亿级流量】实战系列之15 【 】
源码IDEA工程获取链接:
写在前面
大家好,我是作者尼恩。
今天是百万级流量 Netty 聊天器 打造的系列文章的第二篇, 设计一个 仿QQ客户端。
在上一篇中,已经完成了 整个系统的完整模块介绍。
上一篇的链接为: 接下来,就需要一个比较高端、大气、上档次的 客户端 UI界面了。
对于主要的UI界面实现,列表如下:
好友列表
消息发送UI
群消息UI
找人和找群
客户端的启动代码如下:
public class MainDialog extends BaseDialog{ private static final long serialVersionUID = 1L; private OnlyPanel topPanel = new OnlyPanel(); private OnlyPanel titlePanel = new OnlyPanel(); private OnlyPanel mainPanel = new OnlyPanel(); private OnlyPanel bottomPanel = new OnlyPanel(); private UserDataPanel userDataPanel = new UserDataPanel(); private TabPanel tabPanel = new TabPanel(); private Root userRoot = new Root(); private Root groupRoot = new Root(); private Root lastRoot = new Root(); public MainDialog() { super(new javax.swing.JFrame(), false); initComponents(); } /** * Creates new form MainDialog */ public MainDialog(java.awt.Frame parent, boolean modal) { super(parent, modal); initComponents(); initUserList(); } private void initComponents() { this.setSize(280, 630); this.setMinimumSize(new java.awt.Dimension(280, 530)); // ... } public static void main(String args[]) { try { for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) { if ("Nimbus".equals(info.getName())) { javax.swing.UIManager.setLookAndFeel(info.getClassName()); break; } } } catch (ClassNotFoundException ex) { java.util.logging.Logger.getLogger(MainDialog.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); } catch (InstantiationException ex) { java.util.logging.Logger.getLogger(MainDialog.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); } catch (IllegalAccessException ex) { java.util.logging.Logger.getLogger(MainDialog.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); } catch (javax.swing.UnsupportedLookAndFeelException ex) { java.util.logging.Logger.getLogger(MainDialog.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); } java.awt.EventQueue.invokeLater(new Runnable() { public void run() { MainDialog dialog = new MainDialog(new javax.swing.JFrame(), true); dialog.addWindowListener(new java.awt.event.WindowAdapter() { @Override public void windowClosing(java.awt.event.WindowEvent e) { System.exit(0); } }); Image imaeg = new ImageIcon("Resources/Images/Login/002.jpg").getImage(); BufferedImage bi = new BufferedImage(imaeg.getWidth(null), imaeg.getHeight(null), BufferedImage.TYPE_INT_RGB); Graphics2D biContext = bi.createGraphics(); biContext.drawImage(imaeg, 0, 0, null); bi = OnlyImageUtil.applyGaussianFilter(bi, null, 50); dialog.setBackgroundImage(bi); dialog.setVisible(true); } }); }}
写在最后
至此为止,终于仿QQ的高大上 UI 客户端介绍。
在这里,致敬和感恩网友夏辉,本实例的UI代码,整合自他的mina 聊天器客户端。他的项目也是开放的和学习型的,由于重写一个客户端,需要挺长时间的,这里先借鉴一下,后续有时间,再重新实现。
为了完成百万级的聊天,代码中,还是有很多需要优化的、升级的地方。
后续的文章,专门介绍如何优化。
疯狂创客圈 实战计划
- Java (Netty) 聊天程序【 亿级流量】实战 开源项目实战
- Netty 源码、原理、JAVA NIO 原理
- Java 面试题 一网打尽
- 疯狂创客圈
发表评论
最新留言
路过按个爪印,很不错,赞一个!
[***.219.124.196]2025年03月21日 18时18分53秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
结构型设计在工作中的一些经验总结
2021-05-07
如何提升员工体验 助力企业业务增长?这个棘手的问题终于被解决了!
2021-05-07
OpenAI Gym简介及初级实例
2021-05-07
Java面向对象
2021-05-07
JAVA带标签的break和continue
2021-05-07
Java获取线程基本信息的方法
2021-05-07
(C++11/14/17学习笔记):线程启动、结束,创建线程多法、join,detach
2021-05-07
紫书——蛇形填数
2021-05-07
A Guide to Node.js Logging
2021-05-07
webwxbatchgetcontact一个神奇的接口
2021-05-07
【考研英语-基础-简单句】简单句的核心变化_谓语情态
2021-05-07
仿小米商城(上)
2021-05-07
HTML 和 CSS 简单实现注册页面
2021-05-07
(SpringMVC)springMVC.xml 和 web.xml
2021-05-07
1.2.3 项目、项目集、项目组合以及运营管理之间的关系
2021-05-07
【△重点△】LeetCode - 4. 寻找两个正序数组的中位数——二分查找
2021-05-07
LeetCode - 5. 最长回文子串——字符串、动态规划
2021-05-07
全局锁和表锁 :给表加个字段怎么有这么多阻碍?
2021-05-07
二分查找与插入排序的结合使用
2021-05-07
892 三维形体的表面积(分析)
2021-05-07