求高手点拨一个“Swing技术的”IM系统的“刷新好友列表”的工程实现方案.
高手,您好:
我在写一个IM通信的Swing技术的工具,现在我在做好友列表.
:
我的好友列表的结构为:
采用一个JFrame类的子类,显示“总界面”,采用多个JButton类的子类做“触发本界面中的好友分类”的“触点”.
点击某一个“触点”后,能够让我的系统将我的用户待到“具体用户选择的分类的好友所在的一个JFrame子类所定义的窗口”.这个JFrame子类所定义的相对于“总界面”的好友分类的子窗口中,也排列这用户的十几位好友的“JButton类型的子类”作为用户选择某一位好友进行聊天的“触点”,能够让用户点击后,就可以打开“聊天窗口”与自己的好友聊天.
现在我遇到的问题是:
无法我的首先登录到系统中的用户的好友列表,在我的之后登录系统的用户登录系统后,能够让我的系统,更新我的C端第一位登录系统地用户的“好友列表”为可用.
现在,经过我的一番修改后,我的系统能够:
在我的用户首先登录后,如果该用户不打开具体某一分类的好友的JFrame子窗口,而选择等待.
这个时间点上,其他的用户如果登陆,并且成功后,这个时间点之后,第一为用户就能够打开好友列表后看到“新登录的用户的JButton按钮为:可用”了.
但是,如果首先登陆系统的用户在之后的用户登陆之前,若打开了自己的好友列表的JFrame子窗口,(就是“含有大量好友聊天触点”的具体的陈列了用户多位好友的JButton类的子类实例的JFrame子窗口),的话,就会导致:
“所有的后来的好友”“不论之后再来多少回”,整个界面中,就只有首先来到的好友的JButton按钮的子类所定义的按钮能够可用,之后的好友,能够看到在自己登陆系统之前登陆的好友,但是看不到在自己登陆系统之后登陆系统的好友.
我处理上述功能的服务器端,是采用了一个“用户登陆验证线程”:一旦看到“是本系统的用户”时,服务器就会向自己的所有好友发出“本用户的用户系统编号”以及“本用户的在线状态”:
0表示离线.
1表示在线.
上述服务器端的代码,我觉得没有问题.
现在的问题应该是由于C端的“更新好友列表”的代码结构的不足导致了问题的出现.
我的处理C端更新好友界面的子线程部分代码如下:
package c_port_packageBJteacher;
public class ManageLocalteacherJButtonOnlineState{
String LocalMyWorkNum = "";
int LocalMyOnlineState = 0;
public ManageLocalteacherJButtonOnlineState(String MyWorkNum,String MyOnlineState){
LocalMyWorkNum = MyWorkNum;
LocalMyOnlineState = Integer.parseInt(MyOnlineState);
}
public void start() throws Exception{
switch(Integer.parseInt(LocalMyWorkNum)){
//语文教师
case 0:
{
if(LocalMyOnlineState==0){
Recv.teacheronline[0]=0;
ChineseTeacher.JB0.setEnabled(false);
MyUserMainUI.ali1.get(0).al1.get(0).repaint();
}else{
Recv.teacheronline[0]=1;
ChineseTeacher.JB0.setEnabled(true);
MyUserMainUI.ali1.get(0).al1.get(0).repaint();
}
break;
}
case 1:
{
if(LocalMyOnlineState==0){
Recv.teacheronline[1]=0;
ChineseTeacher.JB1.setEnabled(false);
MyUserMainUI.ali1.get(0).al1.get(0).repaint();
}else{
Recv.teacheronline[1]=1;
ChineseTeacher.JB1.setEnabled(true);
MyUserMainUI.ali1.get(0).al1.get(0).repaint();
}
break;
}
case 2:
{
if(LocalMyOnlineState==0){
Recv.teacheronline[2]=0;
ChineseTeacher.JB2.setEnabled(false);
MyUserMainUI.ali1.get(0).al1.get(0).repaint();
}else{
Recv.teacheronline[2]=1;
ChineseTeacher.JB2.setEnabled(true);
MyUserMainUI.ali1.get(0).al1.get(0).repaint();
}
break;
}
case 3:
{
if(LocalMyOnlineState==0){
Recv.teacheronline[3]=0;
ChineseTeacher.JB3.setEnabled(false);
MyUserMainUI.ali1.get(0).al1.get(0).repaint();
}else{
Recv.teacheronline[3]=1;
ChineseTeacher.JB3.setEnabled(true);
MyUserMainUI.ali1.get(0).al1.get(0).repaint();
}
break;
}
case 4:
{
if(LocalMyOnlineState==0){
Recv.teacheronline[4]=0;
ChineseTeacher.JB4.setEnabled(false);
MyUserMainUI.ali1.get(0).al1.get(0).repaint();
}else{
Recv.teacheronline[4]=1;
ChineseTeacher.JB4.setEnabled(true);
MyUserMainUI.ali1.get(0).al1.get(0).repaint();
}
break;
}
case 5:
{
if(LocalMyOnlineState==0){
Recv.teacheronline[5]=0;
ChineseTeacher.JB5.setEnabled(false);
MyUserMainUI.ali1.get(0).al1.get(0).repaint();
}else{
Recv.teacheronline[5]=1;
ChineseTeacher.JB5.setEnabled(true);
MyUserMainUI.ali1.get(0).al1.get(0).repaint();
}
break;
}
case 6:
{
if(LocalMyOnlineState==0){
Recv.teacheronline[6]=0;
ChineseTeacher.JB6.setEnabled(false);
MyUserMainUI.ali1.get(0).al1.get(0).repaint();
}else{
Recv.teacheronline[6]=1;
ChineseTeacher.JB6.setEnabled(true);
MyUserMainUI.ali1.get(0).al1.get(0).repaint();
}
break;
}
case 7:
{
if(LocalMyOnlineState==0){
Recv.teacheronline[7]=0;
ChineseTeacher.JB6.setEnabled(false);
MyUserMainUI.ali1.get(0).al1.get(0).repaint();
}else{
Recv.teacheronline[6]=1;
ChineseTeacher.JB6.setEnabled(true);
MyUserMainUI.ali1.get(0).al1.get(0).repaint();
}
break;
}
case 8:
{
if(LocalMyOnlineState==0){
Recv.teacheronline[8]=0;
ChineseTeacher.JB8.setEnabled(false);
MyUserMainUI.ali1.get(0).al1.get(0).repaint();
}else{
Recv.teacheronline[8]=1;
ChineseTeacher.JB8.setEnabled(true);
MyUserMainUI.ali1.get(0).al1.get(0).repaint();
}
break;
}
case 9:
{
if(LocalMyOnlineState==0){
Recv.teacheronline[9]=0;
ChineseTeacher.JB9.setEnabled(false);
MyUserMainUI.ali1.get(0).al1.get(0).repaint();
}else{
Recv.teacheronline[9]=1;
ChineseTeacher.JB9.setEnabled(true);
MyUserMainUI.ali1.get(0).al1.get(0).repaint();
}
break;
}
case 10:
{
if(LocalMyOnlineState==0){
Recv.teacheronline[10]=0;
ChineseTeacher.JB10.setEnabled(false);
MyUserMainUI.ali1.get(0).al1.get(0).repaint();
}else{
Recv.teacheronline[10]=1;
ChineseTeacher.JB10.setEnabled(true);
MyUserMainUI.ali1.get(0).al1.get(0).repaint();Recv.teacheronline[11]=0;
ChineseTeacher.JB11.setEnabled(false);
MyUserMainUI.ali1.get(0).al1.get(0).repaint();
}
break;
}
case 11:
{
if(LocalMyOnlineState==0){
}else{
Recv.teacheronline[11]=1;
ChineseTeacher.JB11.setEnabled(true);
MyUserMainUI.ali1.get(0).al1.get(0).repaint();
}
break;
}case 12:
{
if(LocalMyOnlineState==0){
Recv.teacheronline[12]=0;
ChineseTeacher.JB12.setEnabled(false);
MyUserMainUI.ali1.get(0).al1.get(0).repaint();
}else{
Recv.teacheronline[12]=1;
ChineseTeacher.JB12.setEnabled(true);
MyUserMainUI.ali1.get(0).al1.get(0).repaint();
}
break;
}
case 13:
{
if(LocalMyOnlineState==0){
Recv.teacheronline[13]=1;
ChineseTeacher.JB13.setEnabled(true);
MyUserMainUI.ali1.get(0).al1.get(0).repaint();
}else{
Recv.teacheronline[13]=1;
ChineseTeacher.JB13.setEnabled(true);
MyUserMainUI.ali1.get(0).al1.get(0).repaint();
}
break;
}
case 14:
{
if(LocalMyOnlineState==0){
Recv.teacheronline[14]=0;
ChineseTeacher.JB14.setEnabled(false);
MyUserMainUI.ali1.get(0).al1.get(0).repaint();
}else{
Recv.teacheronline[14]=1;
ChineseTeacher.JB14.setEnabled(true);
MyUserMainUI.ali1.get(0).al1.get(0).repaint();
}
break;
}
case 15:
{
if(LocalMyOnlineState==0){
Recv.teacheronline[15]=0;
ChineseTeacher.JB15.setEnabled(false);
MyUserMainUI.ali1.get(0).al1.get(0).repaint();
}else{
Recv.teacheronline[15]=1;
ChineseTeacher.JB15.setEnabled(true);
MyUserMainUI.ali1.get(0).al1.get(0).repaint();
}
break;
}
case 16:
{
if(LocalMyOnlineState==0){
Recv.teacheronline[16]=0;
ChineseTeacher.JB16.setEnabled(false);
MyUserMainUI.ali1.get(0).al1.get(0).repaint();
}else{
Recv.teacheronline[16]=1;
ChineseTeacher.JB16.setEnabled(true);
MyUserMainUI.ali1.get(0).al1.get(0).repaint();
}
break;
}
case 17:
{
if(LocalMyOnlineState==0){
Recv.teacheronline[17]=0;
ChineseTeacher.JB17.setEnabled(false);
MyUserMainUI.ali1.get(0).al1.get(0).repaint();
}else{
Recv.teacheronline[17]=1;
ChineseTeacher.JB17.setEnabled(true);
MyUserMainUI.ali1.get(0).al1.get(0).repaint();
}
break;
}
case 18:
{
if(LocalMyOnlineState==0){
Recv.teacheronline[18]=0;
ChineseTeacher.JB18.setEnabled(false);
MyUserMainUI.ali1.get(0).al1.get(0).repaint();
}else{
Recv.teacheronline[18]=1;
ChineseTeacher.JB18.setEnabled(true);
MyUserMainUI.ali1.get(0).al1.get(0).repaint();
}
break;
}
}
}