我知道我的程序的客户端接收良好,因为当我 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 方法无效,但是哦,好吧,只要有解决方案,我不在乎。