前几天看韩顺平写的qq聊天聊天程序,跟着他的视频打了遍,都过了。但到了多人聊天这块,当发送信息时,明明服务器接收到了,但为什么不能显示?
他是将每个聊天窗口都放入到hashmap中。定义的haspmap:
public static HashMap<String, ChatFrame> hm = new HashMap<String, ChatFrame>();
其中String为发送者id+接受者id。然后分别add()和get()方法。
假设我的2个用户名分别为1和2.
添加ChatFrame代码如下:
ChatFrame cf = new ChatFrame(this.userName,friendName);
ManageChatFrame.addChatFrame(this.userName+" "+friendName, cf);
接受的ChatFrame代码如下:
ChatFrame cf = ManageChatFrame.getChatFrame(m.getGetter()+" "+m.getSender());
if(cf == null){
System.out.println("cf is null");
}
运行结果为:
cf is null
//userName为sender,friendname为getter。
我将HaspMap的值遍历一遍。发现没有m.getGetter()+" "+m.getSender()对应的ChatFrame.
getGetter():1,getSender():2
name2 1,cftm.view.ChatFrame[frame0,196,255,400x300,invalid,layout=java.awt.BorderLayout,title=2与1聊天中...,resizable,normal,defaultCloseOperation=HIDE_ON_CLOSE,rootPane=javax.swing.JRootPane[,8,30,384x262,layout=javax.swing.JRootPane$RootLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=16777673,maximumSize=,minimumSize=,preferredSize=],rootPaneCheckingEnabled=true]
cf is null
为什么他的可以显示我的不能显示。。各位指点下,谢谢。
他是将每个聊天窗口都放入到hashmap中。定义的haspmap:
public static HashMap<String, ChatFrame> hm = new HashMap<String, ChatFrame>();
其中String为发送者id+接受者id。然后分别add()和get()方法。
假设我的2个用户名分别为1和2.
添加ChatFrame代码如下:
ChatFrame cf = new ChatFrame(this.userName,friendName);
ManageChatFrame.addChatFrame(this.userName+" "+friendName, cf);
接受的ChatFrame代码如下:
ChatFrame cf = ManageChatFrame.getChatFrame(m.getGetter()+" "+m.getSender());
if(cf == null){
System.out.println("cf is null");
}
运行结果为:
cf is null
//userName为sender,friendname为getter。
我将HaspMap的值遍历一遍。发现没有m.getGetter()+" "+m.getSender()对应的ChatFrame.
getGetter():1,getSender():2
name2 1,cftm.view.ChatFrame[frame0,196,255,400x300,invalid,layout=java.awt.BorderLayout,title=2与1聊天中...,resizable,normal,defaultCloseOperation=HIDE_ON_CLOSE,rootPane=javax.swing.JRootPane[,8,30,384x262,layout=javax.swing.JRootPane$RootLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=16777673,maximumSize=,minimumSize=,preferredSize=],rootPaneCheckingEnabled=true]
cf is null
为什么他的可以显示我的不能显示。。各位指点下,谢谢。
解决方案 »
- java jna 调用linux中so库有兴趣的进来瞅瞅
- 轻量级Java EE企业应用实战:Struts 2+Spring 3+Hibernate整合开发.第3版
- 在netbeans下装struts2插件时遇到头痛
- eclipse版本
- struts中向数据库插入数据,出现编码问题
- 急,struts 中web.xml的taglib问题
- 关于java回调、继承、接口等基础问题
- 小弟学java近两月了,越学越觉得郁闷,对于方法,类,还有就是util集java.lang看完书后......
- udp数据包接收问题?
- 我想在北京找一份JAVA程序员工作
- 在struts2中怎么实现在同一个action两个result中跳转(在线等)
- 为什么我在运行我的留言板时会出现如下的问题??
public class ManageChatFrame{
public static HashMap<String, ChatFrame> hm = new HashMap<String, ChatFrame>();
public static void addChatFrame(String u, ChatFrame cf){
hm.put(u, cf);
}
public static ChatFrame getChatFrame(String u){
return (ChatFrame)hm.get(u);
}
}
sender和getter放在信息包m里面,分别由userName和friendName赋值的。
m.setSender(this.userName);
m.setGetter(this.friendName);
首先用户1点击他的好友2时将ChatFrame1 2放入到ManageChatFrame,然后用户2点击他的好友1时将ChatFrame2 1放入到ManageChatFrame,此时用户1发送信息给2。信息包m中已有信息,但是ManageChatFrame却没有ChatFrame2 1。不知道为什么。。