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のチャットを更新するため、何も問題はありません。何らかの理由で、Clientクラスから呼び出されたときにチャットが更新されません。ChatHandlerクラス内でこのメソッドを使用してみました。
public void receiveChat(String message) {
updateChat(message);
}
あなたが私を助けてくれることを願っています。正直なところ、printlnメソッドは機能するので、これは機能するはずですが、update chatメソッドは機能しませんが、解決策がある限り、私は気にしません。