XMPP通讯开发-弹出好友通信对话框的逻辑设计

在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才行,这个我们放在下面一章里面。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值