Guten Abend, alle zusammen, folgendes Anliegen möchte ich mit euch teilen:
Ich bin gerade im Begriff, ein Programm zu erstellen (ja, das wundert), in dem zwei Threads gleichzeitig auf ein JTextPane zugreifen und Strings anhängen via Document#insertString.
Dafür gibt es allerdings im JTextPane-Erbe eine Methode:
Nun ist das Problem, dass bei 'gleichzeitigem' Aufruf der Methode die Strings ineinander übergehen, sprich, folgendes könnte passieren:
JTextPane - Soll:
Thread-1: Halli Hallo!
Thread-2: Halli Hallo!
Ggf. ist:
Thread-Thread-2:Halli Hallo!
1:Halli Hallo!
Lösung hierfür: synchronized
public synchronized void addMessage(...){...}
Problem aber ist immer noch, dass wenn sie 'gleichzeitig' darauf zugreifen, durch diese Methode die Überlappung der Strings zwar verhindert wird, aber komischerweise wird das JTextPane urplötzlich schwarz, repaintet nicht und reagiert auch sonst nicht mehr.
Woran könnte das denn liegen?
Liebe Grüße.
Ich bin gerade im Begriff, ein Programm zu erstellen (ja, das wundert), in dem zwei Threads gleichzeitig auf ein JTextPane zugreifen und Strings anhängen via Document#insertString.
Dafür gibt es allerdings im JTextPane-Erbe eine Methode:
Java:
public void addMessage(Message msj)
{
[...]
int outputLength = getDocument().getLength();
getDocument().insertString(outputLength, "© Muja - ", imageStyle); // Zeilenabstand erhöhen
getDocument().insertString(outputLength, msj.getAuthor().getName() + ": " + text + "\n", null); // einzufügender String
[...]
}
JTextPane - Soll:
Thread-1: Halli Hallo!
Thread-2: Halli Hallo!
Ggf. ist:
Thread-Thread-2:Halli Hallo!
1:Halli Hallo!
Lösung hierfür: synchronized
public synchronized void addMessage(...){...}
Problem aber ist immer noch, dass wenn sie 'gleichzeitig' darauf zugreifen, durch diese Methode die Überlappung der Strings zwar verhindert wird, aber komischerweise wird das JTextPane urplötzlich schwarz, repaintet nicht und reagiert auch sonst nicht mehr.
Woran könnte das denn liegen?
Liebe Grüße.