NO, non mi funziona neanche cosi....
Forse la JTextArea ha bisogno di un repaint() prima della scrittura?

Allora ho rifatto tutto da capo ed ho rifatto le classi indipendenti : CampoGioco, GameFrame e AreaPanel.

CampoGioco contiene le system.out che devo mettere sulla JTextArea
GameFrame costruisce il frame
AreaPanel contiene la JTextArea

public class CampoGioco {

public int M;
public int N;
public Integer S = new Integer(0);
Arbitro inizio = null;
protected int numGiocatori;
protected Giocatore campo[][];
AreaPanel ap;


public CampoGioco(int righe,int colonne) {
N = righe;
M = colonne;
campo = new Giocatore[N][M];
System.out.println("INIZIO");
this.inizializzaCampo();
ap = new AreaPanel();
}

public void inizializzaCampo() {
numGiocatori = N;
int colonna = 0;
int riga = 0;
ap = new AreaPanel();
for(riga = 0;riga < N;riga++){
ap.area.append(riga + " " + colonna);
//System.out.println(riga + " " + colonna);
campo[riga][0] = new Giocatore(Integer.toString(riga+1),this,riga,colon na);
}
this.parteGioco();
}

public void parteGioco() {
inizio = new Arbitro("Arbitro",this,0,0);

for(Giocatore[] giocarr : campo){
for(Giocatore gio : giocarr){
if(gio != null)
gio.start();
}
}
inizio.start();
}

public void stampaCampo() {
for(int i = 0;i<N;i++){
for(int j = 0;j<M;j++){
if(campo[i][j] == null)
ap.area.setText("-\t");
//System.out.print("-\t");
else
System.out.print(campo[i][j] + "\t");
}
System.out.println();
}

}
}

public class AreaPanel extends JPanel{

JTextArea area;

public AreaPanel() {

area = new JTextArea();
add(area,BorderLayout.NORTH);

}


}

COSA STO SBAGLIANDO?