0

我知道我的程序的客户端接收良好,因为当我 system.out.println(message); 它在 cmd 提示符中显示消息。唯一的问题是,当我调用更新游戏框架(在 JPanel 中)上的聊天的方法时,消息不会显示。这是一些代码片段,看看你能不能告诉我为什么它不会更新。

客户端接收数据包方法:

public void receivePackets(int packetID, String line, int colon) throws IOException{
switch(packetID) {
    case 0: //player sending a message
    String token = line.substring(colon+1);
    chatHandler.updateChat(message);
    System.out.println(message);//this prints out
    break;
    case 1: //player position update
    int comma = line.indexOf(",");
    int playerX = Integer.parseInt(line.substring(colon+1, comma));
    int playerY = Integer.parseInt(line.substring(comma+1));
    break;
}
}

ChatHandler 发送聊天的方法:

public void updateChat(String next) {
allChat[4] = allChat[3];
allChat[3] = allChat[2];
allChat[2] = allChat[1];
allChat[1] = allChat[0];
allChat[0] = next;
     System.out.println(next);//this also prints out
}

这是问题所在。我知道 updateChat 方法没有任何问题,因为当我从 ChatHandler 类中调用它时,它会更新 JPanel 上的聊天。当从客户端类调用它时,它只是出于某种原因不会更新聊天。我什至尝试在 ChatHandler 类中使用此方法:

public void receiveChat(String message) {
    updateChat(message);
}

我希望你能帮助我。老实说,这应该有效,因为 println 方法有效,但 update chat 方法无效,但是哦,好吧,只要有解决方案,我不在乎。

4

1 回答 1

0

如果您收到消息,那么这不是套接字问题,更有可能是重绘问题。确保在负责显示它的 JComponent 上设置文本。然后,如有必要,强制重新绘制。

于 2012-06-20T09:44:50.343 回答