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のチャットを更新するため、何も問題はありません。何らかの理由で、Clientクラスから呼び出されたときにチャットが更新されません。ChatHandlerクラス内でこのメソッドを使用してみました。

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

あなたが私を助けてくれることを願っています。正直なところ、printlnメソッドは機能するので、これは機能するはずですが、update chatメソッドは機能しませんが、解決策がある限り、私は気にしません。

4

1 に答える 1

0

メッセージが表示される場合は、ソケットの問題ではなく、再描画の問題である可能性が高くなります。表示を担当する JComponent にテキストを設定していることを確認してください。その後、必要に応じて強制的に再描画します。

于 2012-06-20T09:44:50.343 に答える