XMPP通訊開發-彈出好友通訊對話方塊的邏輯設計

來源:互聯網
上載者:User

在QQ裡面我們要跟好友進行通訊,選擇好友所在的組,雙擊好友選項,彈出聊天的對話方塊,這裡我們就要實現這個步驟,在之前顯示好友名單的功能裡面我使用的是JTree組件,所以我們顯示的也就是一個樹形結構,分為根節點,枝節點,分葉節點,而要彈出框的節點就是分葉節點,所有當我們雙擊功能的時候,要進行判斷。

tree = new JTree(top);            tree.addMouseListener(new MouseAdapter(){                @Override                public void mouseClicked(MouseEvent e) {                    if(e.getClickCount() == 2){                         DefaultMutableTreeNode note=(DefaultMutableTreeNode) tree.getLastSelectedPathComponent();                         if(note.isRoot()){                             System.out.println("root  "+note.toString());                         }else if(note.isLeaf()){                             System.out.println("分葉節點  "+note.toString());                         }else{                               System.out.println("枝節點  "+note.toString());                         }                    }                    super.mouseClicked(e); //To change body of generated methods, choose Tools | Templates.                }                            });

我給JTree添加了一個雙擊滑鼠事件,看一下上面的代碼的實現效果:

run:root  好友root  好友枝節點  客戶分葉節點  袁莉分葉節點  克旗
從上面我們可以看到分葉節點就是我們想要的,當使用者雙擊枝節點的時候,我們需要建立一個對話方塊,在對話方塊裡面使用JPanel設計布局,當雙擊好友的時候,彈出聊天對話方塊,我們在上面的代碼裡面在補充一個對話方塊功能,

 tree = new JTree(top);            tree.addMouseListener(new MouseAdapter(){                @Override                public void mouseClicked(MouseEvent e) {                    if(e.getClickCount() == 2){                         DefaultMutableTreeNode note=(DefaultMutableTreeNode) tree.getLastSelectedPathComponent();                         if(note.isRoot()){                             System.out.println("root  "+note.toString());                         }else if(note.isLeaf()){                             System.out.println("分葉節點  "+note.toString());                             ChatPanel chatPanel = new ChatPanel();                             JDialog chatDialog = new JDialog();                             chatDialog.setContentPane(chatPanel);                             chatDialog.setSize(501, 512);                             chatDialog.setVisible(true);                         }else{                             System.out.println("枝節點  "+note.toString());                         }                    }                    super.mouseClicked(e); //To change body of generated methods, choose Tools | Templates.                }            });
如下:



當然現在的效果只是一個框框,如果要實現通訊我們需要自己重寫這個JDialog,將需要的參數傳遞給JDialog才行,這個我們放在下面一章裡面。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.