# new Line in JTextarea



## folgemilch (7. Jun 2010)

Hallo zusammen.

Ich würde gerne einen Text in einem JTextArea ausgeben.
Dabei habe ich ein merkwürdiges Problem mit dem schreiben in eine neue Zeile.

Wenn ich folgendermaßen in das JTextArea schreibe, dann klappt das ganz gut,
allerdings wird unter Linux der Zeilenvorschub nicht angezeigt und es wird alles in eine Zeile geschrieben.


```
String s = new String();
String newLine = System.getProperty("line.separator");
  
for(...){

  s = newLine + wert.toString();
  textfeld.insert(s,k);
}
```

Wenn ich es ohne line.separator versuche und den Zeilenvorschub mit \n mache, dann klappt der Zeilenvorschub garnicht. Wenn ich vor das "\n" noch ein Leerzeichen mache, " " dann klappt es, aber der Aufbau der JTextArea ist unglaublich langsam.

Kennst das jemand und hat eine Lösung dafür.
Mache ich vielleicht grundlegend etwas falsch?

Danke für eure Hilfe.


----------



## L-ectron-X (7. Jun 2010)

Probiere mal 
	
	
	
	





```
\n\r
```
 für neue Zeile und Wagenrücklauf. Sollte unter Linux das gewünschte Ergebnis bringen.


----------



## folgemilch (7. Jun 2010)

Danke für die schnelle Antwort. Ich habe es erst mal unter Windows versucht. Es geht auch, ist aber leider genauso langsam wie das normale \n.  Warum ist die Textausgabe mit \n in einem JTextArea langsamer als mit System.getProperty("line.separator");? Und warum muss ich vor dem \n erst ein leerzeichen einfügen, damit es funktioniert?


----------



## diggaa1984 (7. Jun 2010)

ich hatte mal gelesen, das man intern sogar nur 
	
	
	
	





```
\n
```
 verwenden solle, und java das dann entsprechend von selbst umsetzt, aber kann dir nich mehr genau sagen in welcher klasse/interface ich das gesehen habe. Vielleicht hast du noch zusätzlich ein ganz anderes problem, das es auch zu diesen performanceeinbußen kommt


----------



## eRaaaa (7. Jun 2010)

diggaa1984 hat gesagt.:


> Vielleicht hast du noch zusätzlich ein ganz anderes problem, das es auch zu diesen performanceeinbußen kommt



/edit: ach das war murks

(aber vllt könnte es trotzdme helfne den String einmal komplett zusammen zubauen und dann zu setzen) ? )


----------



## folgemilch (7. Jun 2010)

Hab den String mal komplett in der Schleife zusammengebaut und dann erst danach einmal 
textfeld.insert(s,k); aufgerufen. Das Ergebnis war, dass dann beide Varianten ("\n" und System.getProperty("line.separator") lange gebraucht haben um den Text darzustellen.
Schade, die Idee hat sich gut angehört. 

Der Text ist übrigens so um die 1000 Zeilen lang, hat aber nicht besonders viele Zeichen in einer Zeile.


----------



## diggaa1984 (7. Jun 2010)

kannst das mal als KSKB verpacken? .. wenn du ihn vorher zusammenbaust, nimm lieber nen StringBuilder


----------



## Ebenius (7. Jun 2010)

diggaa1984 hat gesagt.:


> ich hatte mal gelesen, das man intern sogar nur
> 
> 
> 
> ...


Genau. Intern nur [c]\n[/c] und nichts anderes.

Ebenius


----------



## diggaa1984 (7. Jun 2010)

Ebenius hat gesagt.:


> Genau. Intern nur [c]\n[/c] und nichts anderes.
> 
> Ebenius


da ham wirs 
DefaultEditorKit


----------



## folgemilch (7. Jun 2010)

Juhu, den Text mit StringBuilder zusammenbauen und danach einmal auf die TextArea adden geht super schnell  Wer hätte gedacht, dass StringBuilder tatsächlich so viel schneller ist im Text zusammenbauen.

Komisch nur, dass es mit System.getProperty("line.separator"); auch ohne StringBuilder schnell ging.

Mit \n hat es bei mir unter Linux nicht geklappt. Mit \n\r geht es, allerdings ist dann noch eine zusätzliche Leerzeile zwischendrin.
Aber besser als 1000 Zeilen in einer einzigen


----------



## Ebenius (7. Jun 2010)

[c]\n\r[/c] ist definitiv falsch. Wenn dann [c]\r\n[/c] und davon will ein Linux sicher nichts wissen. Das heißt, Du hast einen Beobachtungsfehler. 

Ebenius


----------



## folgemilch (7. Jun 2010)

Also ich hab gerade mal in dem DefaultEditorKit gelesen.
\n sollte ja wohl echt das richtige sein.

Hab ich dann einen Beobachtungsfehler? Was ist denn ein Beobachtungsfehler?

Nur so, was ist denn ein KSKB in das ich etwas verpacken kann?


----------



## folgemilch (7. Jun 2010)

Heißt Beobachtungsfehler vielleicht, dass die eine Textzeile, die ich die ganze Zeit sehe in wirklichkeit so um die 1000 Zeilen sind und ich das nur falsch beobachtet habe?


----------



## Ebenius (7. Jun 2010)

Halt mal die Maus über KSKB. Dann siehst Du entweder einen Tooltip im Browser, oder eine Erklärung in der Statusleiste, oder Dein Browser ist älter als ich.

Ein Beobachtungsfehler: Du hast gedacht etwas beobachtet zu haben das so nicht der Fall ist. Bzw. Du hast ein anderes Problem falsch interpretiert (unbewusst auf eine falsche Ursache rückgeschlossen).



folgemilch hat gesagt.:


> Heißt Beobachtungsfehler vielleicht, dass die eine Textzeile, die ich die ganze Zeit sehe in wirklichkeit so um die 1000 Zeilen sind und ich das nur falsch beobachtet habe?


Nach so ein paar Jahren in einem Forum stellt sich heraus, dass wirklich *alles* möglich ist; glaub's mir. :-D

Ebenius


----------



## folgemilch (7. Jun 2010)

Das mit dem KSKB ist ja cool. Gibts noch mehr so Abkürzungen?

Also \n geht doch!
 \r macht keinen Unterschied. War wohl echt sowas wie ein Beobachtungsfehler. 

Das mit der scheinbaren Leerzeile war doch glatt noch ein Beobachtungsfehler. Der Zeilenabstand unter Linix ist eifach nur riesig. 

So, dann ist das Rätsel wohl gelöst. Danke an alle.


----------



## Ebenius (7. Jun 2010)

Beobachtungsfehler, ich sag's ja. :lol:

Ebenius


----------

