博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Netty 仿QQ聊天室 (实战二)
阅读量:5931 次
发布时间:2019-06-19

本文共 3674 字,大约阅读时间需要 12 分钟。

Netty 聊天器(百万级流量实战二):仿QQ客户端

疯狂创客圈 Java 分布式聊天室【 亿级流量】实战系列之15 【

源码IDEA工程获取链接

写在前面

​ 大家好,我是作者尼恩。

今天是百万级流量 Netty 聊天器 打造的系列文章的第二篇, 设计一个 仿QQ客户端。

上一篇中,已经完成了 整个系统的完整模块介绍。

上一篇的链接为:

接下来,就需要一个比较高端、大气、上档次的 客户端 UI界面了

对于主要的UI界面实现,列表如下:

好友列表

24fc8b5a-775c-3c4c-967b-79e259772dc5.png

消息发送UI

fe717e43-2db3-3e5f-960f-64fafe9a123b.png

群消息UI

31cd58e9-fc65-39eb-9f3e-9269fbffb1a5.png

找人和找群

60b0d3fe-59b4-3579-9f92-baa6c5058f34.png

客户端的启动代码如下:

 
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 面试题 一网打尽

  • 疯狂创客圈


转载于:https://www.cnblogs.com/crazymakercircle/p/9975448.html

你可能感兴趣的文章
分布式消息队列RocketMQ与Kafka架构上的巨大差异之2 -- CommitLog与ConsumeQueue
查看>>
我的友情链接
查看>>
排除Exchange Server自动查询的AD服务器
查看>>
linux内核优化(转)
查看>>
Index column size too large. The maximum column size is 767 bytes
查看>>
rocketmq3.26研究之一存储层
查看>>
mysql数据库操作
查看>>
nifi使用技巧总结
查看>>
老男孩教育每日一题-第112天-下面这个scp命令使用有什么问题?
查看>>
windows7下打开excel2007,报“向程序发送命令时出现问题”的错误
查看>>
Linux容易忘记或忽略的基础细节(一)
查看>>
Confluence 6 重构查找索引
查看>>
Influxdb+Collectd(4)——InfluxDB基本操作3
查看>>
《北京法源寺》
查看>>
最新!!招银网络科技Java面经,整理附答案
查看>>
Oracle 多表连接
查看>>
I/O
查看>>
gdb 调试技巧
查看>>
[Struts 2系列] Struts 2入门之HelloWorld
查看>>
PHPstudy 局域网映射配置 ,同事可以访问我的电脑网站
查看>>