JTextarea verschluckt Zeilen

Status
Nicht offen für weitere Antworten.

Erlo

Mitglied
Hallo,

habe hoffentlich eine einfache Frage!

Ich habe mir eine Logfenster mittels JTextarea für einen Thread erstellt.
Hat der Thread seine Arbeit beendet soll die der Text aus der JTextarea
mittels getText() als ganzes abgerufen werden und dann als Block in eine Logdatei geschrieben werden.

Problem:
Das mitloggen klappt wunderbar alles wird angezeigt. Doch wenn ich den Text aus der Textarea mittels getText() abrufe, gibt er mir nicht den ganzen Text aus der Textarea sonder unterschlägt immer einige Zeilen. Woran könnte das liegen?
 

javimka

Top Contributor
Wie meinst du das genau, dass du mit einer TextArea einen Thread erstellt hast? Via Listener?
Ohne Code kann ich halt nur raten, aber ich versuch es mal. Während dein Thread arbeitet, wird mit setText wahrscheinlich weiter Text in die Textarea geschrieben. Dieser Text ist wahrscheinlich noch nicht gespeichert, wenn du mit getText bereits den Text herausliesst. Natürlich fehlt dann ein Teil.
Wie synchronisierst du denn deine Threads, mit wait und notify?
Du könntest einmal folgendes versuchen. Dort wo der Text herausgelesen wird, schreibst du:

Java:
SwingUtilities.invokeLater(new Runnable() {
	public void run() {
		String text = textArea.getText();
		//... weiterer Code
	}
});
Es ist nicht schön so, aber du kannst damit mal überprüfen, ob vielleicht noch nicht alle Schreibbefehle abgehandelt worden sind.
 

Erlo

Mitglied
Hi,

das der Thread noch schreibt dachte ich auch direkt als erstes Aber er ruft den Text erst ab wenn er fertig ist.

Vereinfachter ablauf:

1. Ich erstelle das LogFenster mit der jTextarea
2. Ich erstelle den Thread und übegebe ihm das LogFenster
3. Starte den Thread
4. Thread arbeitete und gibt statusmeldungen an das Logfenster, welche auch alle schön angezeigt
werden.
5. Thread liest nach der letzten Statusmeldung mittels getText() die Ausgabe aus dem
LogFenster(also aus der JTextarea)
6. Der Text aus dem Logfenster wird über einen FileWriter in eine Datei geschrieben

Bei Punkt 5 tritt der Fehler auf. Die abfrage gibt nicht den ganzen Text zurück obwohl alles vollständig in der JTextarea angezeigt wurde.(Habe das mal mit text.length überprüft, es sind zu wenige Zeichen)


Hier mal der Code des Logfensters:
Java:
ublic class Console extends JFrame {

     private JTextArea area = new JTextArea(15,75);
     private PrintStream out = new MyAreaStream(area);

     public Console (String title) {
         this.getContentPane().setLayout(new BorderLayout());
         this.getContentPane().add(
	    new JScrollPane(area,
		JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,
		JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED)
	    , BorderLayout.CENTER);
         
         this.setTitle(title);
         this.setSize(new Dimension(450, 250));
         area.setFont(new Font("Courier New",Font.PLAIN,12));
      
     }
     
     /**
      * Ausgabe des JTextarea textes
      * @return
      */
     public String getText(){
    	  return area.getText();
     }
     
     /**
	 * @return the Printstream über den auf die JTextarea geschrieben werden kann
	 */
	public PrintStream getOut() {
		return out;
	}

     class MyAreaStream extends PrintStream {
         MyAreaStream (JTextArea area) {
             super(new MyAreaOutStream(area),true);
         }
     }

     class MyAreaOutStream extends OutputStream {
         private JTextArea area = null;

         MyAreaOutStream (JTextArea out) {
             this.area = out;
         }
         public void write(final int b) {
             SwingUtilities.invokeLater(new Runnable() {
                 public void run() {
                     area.append(String.valueOf((char)b));
                     area.setCaretPosition(area.getText().length());
                 }
             });
         }

     }
}
 
Zuletzt bearbeitet:

javimka

Top Contributor
Zeigst du noch den Code, wo die textArea in ein File geschrieben wird, also dort, wo der Thread beendet wird und den entsprechenden Befehle aufruft? Bist du denn absolut sicher, dass der gesamte Text in der TextArea angekommen ist, bevor du ihn wieder aussliest und ins File schreibst? Wenn der Text nur Hundertstelsekunden zu spät kommt, sieht es ja für das Auge immer noch vollständig aus, aber intern ist es halt nicht so.
 

Erlo

Mitglied
Wenn der Text nur Hundertstelsekunden zu spät kommt, sieht es ja für das Auge immer noch vollständig aus, aber intern ist es halt nicht so.

Achso das JFenster ist ja intern auch ein Thread. Ok dann muß ich mal schaun wie ich das lösen könnte.

Threadaufruf vereinfacht:

Java:
public Object run() {
		try{

		// Erstelle eigene Console
		console = new Console("Login Thread");
		console.setVisible(true);
                 // hole Printstream
		ownConsole= console.getOut();

                // Führe Funktion aus
                funktion.ausführen()
                ownConsole.println(Logmeldung)
                               .
                               .
                               .           
                // Führe Funktion aus
                funktion.ausführen()
                ownConsole.println(Logmeldung)

                FileWriter file = new FileWriter("test.txt");
		file.write(console.getText());
                file.flush();
                ownConsole.close();
  	
	
		return null;
	}
 

javimka

Top Contributor
Vesuch es wirklich mal mit SwingUtilities.invokeLater(), wie oben beschrieben. Das Konstrukt könntst du gleich um die letzten vier Zeilen legen.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
T Swing Mehrere Ausgaben in JTextArea AWT, Swing, JavaFX & SWT 2
B JPanel-Inhalte inkl. JTextarea zoomen? AWT, Swing, JavaFX & SWT 3
P JTextarea (in JScrollPane) zeigt nur die beiden letzten Einträge an? AWT, Swing, JavaFX & SWT 0
RedEagle Swing JTextArea ist leer AWT, Swing, JavaFX & SWT 13
E Warum wird Text im JTextArea erst am Programmende angezeigt ? AWT, Swing, JavaFX & SWT 1
E wie in JScrollPane auf JTextArea zugreifen AWT, Swing, JavaFX & SWT 12
K Swing 2 JTextArea parrallel scrollable AWT, Swing, JavaFX & SWT 16
Hatsi09 JTextArea Inhalt verlinken AWT, Swing, JavaFX & SWT 4
ralfb1105 jTextArea Scrollbar hinzufügen - mit Jigloo erstellt AWT, Swing, JavaFX & SWT 7
S Ausgabe in JTextArea AWT, Swing, JavaFX & SWT 13
H JTextArea - farbige Zeilen .. bitte um Vorschläge zur Implementierung AWT, Swing, JavaFX & SWT 1
F 2D-Grafik JTextArea drucken bringt mieses Ergebnis AWT, Swing, JavaFX & SWT 2
Mario1409 Swing JTextArea scroll Problem AWT, Swing, JavaFX & SWT 0
Bluedaishi JTextArea gefundene Zeile nach Oben Scrollen AWT, Swing, JavaFX & SWT 13
S JTextArea Text nach oben wandern lassen AWT, Swing, JavaFX & SWT 7
Bluedaishi JtextArea AWT, Swing, JavaFX & SWT 6
V JScrollBar soll weiterscrollen, wenn Inhalt von JTextArea erweitert wird AWT, Swing, JavaFX & SWT 7
G JTextArea mit JScrollPane wird nicht angezeigt AWT, Swing, JavaFX & SWT 2
Bluedaishi JDialog modal und JTextArea AWT, Swing, JavaFX & SWT 4
F JTextarea Steuern ~ consolenanbindung AWT, Swing, JavaFX & SWT 5
F Event Handling JTextArea auf bestimmte Eingabe reagieren (Return-Taste) AWT, Swing, JavaFX & SWT 2
F JTextArea hat keinen Rahmen AWT, Swing, JavaFX & SWT 10
N JTextArea Events weiterleiten AWT, Swing, JavaFX & SWT 3
R JTextArea mit verschiedenen Textfarben AWT, Swing, JavaFX & SWT 6
M JTextArea wird nicht aktualisiert (ActionListener-Problem) AWT, Swing, JavaFX & SWT 1
HoloYoitsu jTextArea.setCaretPosition(); What am I doing wrong? AWT, Swing, JavaFX & SWT 0
S Zeilenumbruch jTextArea mit toString AWT, Swing, JavaFX & SWT 2
F Swing String[] in JTextArea ausgeben. Jeder Eintrag in neue Zeile, aber ohne "\n"- Geht das? AWT, Swing, JavaFX & SWT 3
M JTextArea - Leertaste "sperren" AWT, Swing, JavaFX & SWT 1
S Inhalt der Java-Konsole in die JTextArea AWT, Swing, JavaFX & SWT 3
M Swing JTextArea mit ScrollBar AWT, Swing, JavaFX & SWT 9
S Swing Zahl der Zeilenumbrüche in einer JTextArea bestimmen AWT, Swing, JavaFX & SWT 1
F Swing Caret in JTextArea vergrößern AWT, Swing, JavaFX & SWT 2
D JTextArea auf KeyListener Command AWT, Swing, JavaFX & SWT 6
N JFrame änliches wie JTextArea? AWT, Swing, JavaFX & SWT 2
A Swing JTextArea - Multi-Line-Editing AWT, Swing, JavaFX & SWT 2
A Swing JTextArea aus anderer Klasse in realtime aktualisieren AWT, Swing, JavaFX & SWT 3
O JTextArea befüllen AWT, Swing, JavaFX & SWT 2
G JTextArea on the fly aus anderem Programm befüllen AWT, Swing, JavaFX & SWT 4
A Swing Einrücken mehrerer Zeilen per Tab in einem JTextPane/JTextArea AWT, Swing, JavaFX & SWT 3
T Swing Ausgabe aus ArrayList in Klasse1 in jTextArea in Klasse2 AWT, Swing, JavaFX & SWT 2
B JTextArea Größe an Container anpassen AWT, Swing, JavaFX & SWT 2
B Drucken der JTextArea AWT, Swing, JavaFX & SWT 4
M JTextArea Zeile hinzufügen AWT, Swing, JavaFX & SWT 4
C JTextArea scrollt bei append(String) aus Threads nicht ans Ende AWT, Swing, JavaFX & SWT 7
P JPanel- Listener durch JTextArea aktivieren AWT, Swing, JavaFX & SWT 8
A JTextArea - Zeichenbegrenzung nach .txt Datei import AWT, Swing, JavaFX & SWT 6
M Swing JScrollPane (Parent JTextArea) aktualisieren + neue Zeile AWT, Swing, JavaFX & SWT 5
Hoppelmann Swing Tasten in JTextArea blockieren AWT, Swing, JavaFX & SWT 2
S JTextArea Tastaturanschläge AWT, Swing, JavaFX & SWT 2
E Swing JTextArea in JFrame, wie nun WindowFocusListener implementieren? AWT, Swing, JavaFX & SWT 2
S Problem mit JButton und JTextArea AWT, Swing, JavaFX & SWT 2
J Swing Mitwachsende JTextArea+ JPanel AWT, Swing, JavaFX & SWT 4
P Swing JtextArea füllen mit setText AWT, Swing, JavaFX & SWT 7
M Probleme mit der Selektion einer JTextArea AWT, Swing, JavaFX & SWT 3
T Die Größe einer JTextArea an Ihren Parent JPanel anpassen. AWT, Swing, JavaFX & SWT 5
hdi Swing ListCellRenderer + JTextArea + LineWrap AWT, Swing, JavaFX & SWT 6
T ComponentOrientation in JTextArea AWT, Swing, JavaFX & SWT 3
H Hintergrundbild in jTextArea AWT, Swing, JavaFX & SWT 4
G Swing JTextArea mit fester Anzahl Spalten! AWT, Swing, JavaFX & SWT 10
G ein JTextArea in zwei JPanels AWT, Swing, JavaFX & SWT 2
L JTextArea mit JScrollPane AWT, Swing, JavaFX & SWT 7
padde479 Swing replace JTextArea funktioniert nicht AWT, Swing, JavaFX & SWT 2
L Zeilenumbrüche aus JTextArea MIT in Textdatei schreiben AWT, Swing, JavaFX & SWT 4
_dp jTextArea/jTextPanel Auto Höhe AWT, Swing, JavaFX & SWT 5
Ollek JTextArea - Feste Zeilenanzahl(8 Zeilen) AWT, Swing, JavaFX & SWT 3
S Swing JTextArea während der Laufzeit füllen AWT, Swing, JavaFX & SWT 5
Ollek Text in JTextField und JTextArea zur Laufzeit ändern AWT, Swing, JavaFX & SWT 6
P Datenelement anderer Klasse in JTextArea ausgeben AWT, Swing, JavaFX & SWT 4
P Scrollbar JTextArea AWT, Swing, JavaFX & SWT 23
M Swing Ausgabe in JTextArea verzögern AWT, Swing, JavaFX & SWT 7
T Swing jTextArea soll sich der Fenstergröße anpassen beim ziehen?? AWT, Swing, JavaFX & SWT 2
S System.out in JTextArea AWT, Swing, JavaFX & SWT 4
S Swing JTextArea - Bild auf/ab Tasten implementieren AWT, Swing, JavaFX & SWT 4
J JTextArea verschwindet bei resize vom JFrame AWT, Swing, JavaFX & SWT 2
VfL_Freak "setAccelerator/KeyStroke" bei JTextArea ? AWT, Swing, JavaFX & SWT 6
P Swing JTextArea - beim neuzeichnen bleibt manchmal weißer Kasten AWT, Swing, JavaFX & SWT 10
Dit_ JTextArea zu Zeile X scrollen AWT, Swing, JavaFX & SWT 4
H variable Höhe einer JTextArea (als Renderer/Editor) als Zelle einer JTable AWT, Swing, JavaFX & SWT 9
B Wechsel JTextArea und JComponent AWT, Swing, JavaFX & SWT 9
M [erledigt] Bestimmte Zeile aus JTextArea löschen AWT, Swing, JavaFX & SWT 3
G Swing JTable und JTextArea synchronisieren AWT, Swing, JavaFX & SWT 2
C JLabel, JTextArea, JScrollPane. repaint(); ? AWT, Swing, JavaFX & SWT 6
M JTextArea AWT, Swing, JavaFX & SWT 2
E Swing JTextArea Alternative? AWT, Swing, JavaFX & SWT 5
A Swing JTextArea über Frame hinaus anzeigen? AWT, Swing, JavaFX & SWT 2
S JInternalFrame oder JTextArea neu laden AWT, Swing, JavaFX & SWT 2
N JTextArea.setLineWrap Bug? AWT, Swing, JavaFX & SWT 3
G Swing JTextArea/JScrollpane: JScrollbar position AWT, Swing, JavaFX & SWT 8
I JTextArea mit Copy Paste Funktion AWT, Swing, JavaFX & SWT 7
M Swing JTextArea größe anpassen & setBackground liefer Nullpointer AWT, Swing, JavaFX & SWT 4
Plastagen JTextArea CaretPosition Aktualisierung AWT, Swing, JavaFX & SWT 10
C JTextField und JTextArea - Verständnisproblem AWT, Swing, JavaFX & SWT 14
B Exceptions werfen und in JTextArea ausgeben AWT, Swing, JavaFX & SWT 4
F new Line in JTextarea AWT, Swing, JavaFX & SWT 15
X Problem bei JTextArea und Thread.sleep() AWT, Swing, JavaFX & SWT 8
J Beliebtes Problem: Scrollbar in JTextArea AWT, Swing, JavaFX & SWT 4
w0ddes Swing JTextArea auf JScrollPane - Autoscroll?! AWT, Swing, JavaFX & SWT 2
Developer_X Swing Java JTextArea auto scroll down AWT, Swing, JavaFX & SWT 6
T Swing JTextArea, JTextPane, JEditorPane...Unterschied?! AWT, Swing, JavaFX & SWT 3

Ähnliche Java Themen


Oben