Auf Thema antworten

Hab mir deinen Code nochmals angeschaut und den Fehler gefunden.


Die Initialisierung deiner JTextArea passt zwar theoretisch, aber leider wird die Methode [icode]processMessage[/icode] aufgerufen noch bevor die Initialisierung abgeschlossen wurde.

Ursache: Es wird zwar der Konstruktor der Klasse [icode]BestellenGui[/icode] als erstes aufgerufen, aber vor den Initialisierungen noch die Konstruktoren der Superklassen aufgerufen und abgearbeitet.

Und in der Basisklasse [icode]Client[/icode] erstellst du einen ClientEmpfänger welcher sofort gestartet wird und processMessage aufruft.


Lösung: Schreibe für die JTextArea ein get-Methode, sofern die Variable noch nicht initialisiert wurde erstellst du ein neues Objekt ansonsten gibst du das vorhandene zurück


[code=java]JTextArea ausgeben;


public JTextArea getAusgeben() {

    if(ausgeben == null) {

         ausgeben = new JTextArea();

    }

    return ausgeben;

}

[/code]


EDIT: Das ist auch einer der Gründe warum in einem Konstruktor wirklich nur Initialisierungen stehen sollten und wirklich verarbeitende Sachen erst durch eine weitere Methode aufgerufen werden sollten.



Oben