源碼IDEA工程獲取連接:Java 聊天室 實戰 源碼 html
你們好,我是做者尼恩。java
今天是百萬級流量 Netty 聊天器 打造的系列文章的第二篇, 設計一個 仿QQ客戶端。面試
上一篇中,已經完成了 整個系統的完整模塊介紹。app
上一篇的連接爲:Java 聊天程序(百萬級流量實戰一):系統介紹篇分佈式
接下來,就須要一個比較高端、大氣、上檔次的 客戶端 UI界面了。ide
對於主要的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 聊天器客戶端。他的項目也是開放的和學習型的,因爲重寫一個客戶端,須要挺長時間的,這裏先借鑑一下,後續有時間,再從新實現。 this
爲了完成百萬級的聊天,代碼中,仍是有不少須要優化的、升級的地方。.net
後續的文章,專門介紹如何優化。
Java (Netty) 聊天程序【 億級流量】實戰 開源項目實戰
Netty 源碼、原理、JAVA NIO 原理
Java 面試題 一網打盡
瘋狂創客圈 【 博客園 總入口 】