准备工作:
两个QQ(Q号现在好容易申请)
eclipse(支持awt swing 可视化开发的版本为佳)
JDK 以上
JQL 直接从官方那边下载的不能直接用需要改装 下载地址:
步骤:
解压jqgsv beta_src
用eclipse导入目录jqgsv beta_src下的项目
把jqgsv beta_src目录下的mons codec jar 和 mons logging jar加到项目属性里的Librares中
打开 myqq MuiltQQfrendSend 实例代码都在这里 可以直接运行用eclipse运行该类 如果登陆失败 多登陆
几次就可以了
//登陆代码
client = new QQClient()
client setConnectionPoolFactory(new PortGateFactory())
QQUser user = new QQUser(你的Q号 你Q号的密码)
client addQQListener(this)
user setUdp(true)
client setUser(user)
//client setLoginServer( )
client setLoginServer( )
qq服务器地址有多种 你可以选一个填上去 QQ号必须是整型
//发送消息
client sendIM(一个好友的QQ号 Util getBytes(ext))//发送一个普通的消息
好友的QQ号必须是整型
类QQClient主要是执行QQ客户端的动作 比如 发送消息 添加好友 获取好友等
//获取你的Q号下的所有好友信息
GetFriendListReplyPacket gf = (GetFriendListReplyPacket)e getSource()
java util List friends = (java util List) gf friends
for(int i = i <friends size() i++){
QQFriend qf = (QQFriend)friends get(i)
jTextArea setText(jTextArea getText() + String valueOf(qf qqNum) + \n )
}
if((int)gf position != ){
client getFriendList(gf position)
}else{
jButton setEnabled(true)
jButton setEnabled(true)
}
client getFriendList() //获取好友列表
这个方法需要配合一个变量position和一个事件才能完成 因为QQ是按多次发送好友列表 position =
表示已到好友列表最后一页 不需要在getFriendList 当得到好友列表会产生一个事件 事件编号为
GetFriendListReplyPacket 好友类
//事件驱动
jql全部采用事件驱动 实现接口 IQQListener
public void qqEvent(QQEvent e) {//事件监听器
System out println( 事件ID: + e type)
/* */ switch(e type)
{
/* <MISALIGNED >*/ /* */ default:
break
/* <MISALIGNED >*/ /* */ case :
/* <MISALIGNED >*/ /* */ processLoginSuccess()//对应的事件处理
/* <MISALIGNED >*/ /* */ break
/* <MISALIGNED >*/ /* */ case :
/* <MISALIGNED >*/ /* */ processLoginFail()
/* <MISALIGNED >*/ /* */ break
///* <MISALIGNED >*/ /* */ case :
///* <MISALIGNED >*/ /* */ processLoginUnknownError()
///* <MISALIGNED >*/ /* */ break
/* <MISALIGNED >*/ /* */ case :
/* <MISALIGNED >*/ /* */ processSendIMSuccess()
/* <MISALIGNED >*/ /* */ break
/* <MISALIGNED >*/ /* */ case :
/* <MISALIGNED >*/ /* */ processChangeStatusSuccess()
QQ的每次动作都会产生一个事件 每个事件对应一个整数 在类edu tsinghua lumaqq qq events QQEvent有具体描述
lishixinzhi/Article/program/Java/hx/201311/26541首先要有个存好友的数据结构:friendList
既然是QQ,那么肯定有好友类别了,一个类别底下的子节点为一个好友。
然后根据这个数据结构画出这个Jtree,
第一列字节点为好友类别,
第二列子节点为好友,给这些字节点添加鼠标点击事件,点击后d出想要的东西。
最后,在接收信息进程内添加一个方法,即一旦有好友上线或者下线则接收改变的好友的信息,之前的存好友的数据结构也随之改变,
再根据这个数据结构改变这个JTree,不会改变的话就重新画一个,tree=new JTree()(tree为之前的列表),这样就可以了。
个人理解是这样的:首先 每一个QQ号都存于数据库表中, 这个表我这里用User表代替 里面的字段名有
用户的id qq号 ....好友表编号 .....同事表编号 ...群表编号 等等
当用户添加好友的时候 首先找到好友的qq号 将其插入到 User 表中的好友表编号 就行了
即 每个qq用户都应该有 一个好友表 这个表有编号 User里面存的就是好友表的编号
个人理解 希望对你有所帮助,谢谢!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)