EDT を使用して GUI を更新する必要があるため、GUI がロックしますが、GUI で更新中の変数も渡す必要があります。
while ((message = this.in.readLine()).startsWith("NUMPLAYERS"))
{
numOfPlayers = Integer.parseInt(message.split(":")[1]);
numPlayers.setText("There are currently " + numOfPlayers + " players in this game");
}
これは動作しません。EDT にテキストを設定する必要がありますが、numOfPlayers を final として宣言せずに渡すことはできません (新しいプレイヤーがサーバーに参加すると変更されるため、これはしたくありません)。