Frage von Knogxel, 26

Java TextArea Text einlesen -> zwischen den Zeilen \n -> in eine normale Stringvariable?

Hallo,

ich bin dabei ein Javaprogramm zu schreiben und brauche Hilfe.

JTextArea TextArea1 = new JTextArea();
                
String nutzername = NameTextBox.getText();
String ueberschrift1 = Ueberschrift1TextBox.getText();
String ueberschrift2 = Ueberschrift2TextBox.getText();
String nachrichtBevor = TextArea1.getText();
String[] nachrichtSplit = nachrichtBevor.split("\n");
String nachricht = String.valueOf(nachrichtSplit);

Wie kann ich den Text von TextArea1 so umwandeln, dass am ende der String nachricht so aussieht (nur ein Bsp.) "Hallo\nwie\ngeht\nes\ndir?"

aktuelle Ausgabe von nachricht: "[Jjava.lang.String;@******"

nutzername ueberschrift1 und ueberschrift2 funktionieren.

Und warum muss ich eigl. eine JTextArea Variable erstellen und bei den anderen Funktioniert es ohne?

Vielen Dank im Vorraus :)

Antwort
von regex9, 5

1. Verwende einen regulären Ausdruck, um alle Whitespaces durch ein \n zu ersetzen.

String text = TextArea1.getText().replaceAll("[\\t\\n\\r]", "\\n");

2. Die anderen Komponenten wie NameTextBox sind wahrscheinlich im View definiert. Wenn ein Benutzer dein Textfeld ebenso befüllen können soll, musst du genauso wie bei den anderen Komponenten verfahren.

Bitte schau für weitere Informationen dazu in die Dokumentation https://docs.oracle.com/javase/tutorial/uiswing/components/textarea.html).

Antwort
von Coder1337, 17

Sehe ich das richtig, du erstellst ein Objekt und holst dann den Text raus? Falls ja, wird der String doch immer leer sein, da du die Area gerade erst erstelllt hast. Ich kenne mich nicht wirklich aus mit Swing nur etwas mit JavaFX... TextArea kann wahrscheinlich auch in Swing nicht verändert werden vom User oder? Dann musst du wahrscheinlich sowas wie TextArea1.setText("Some Text"); machen, damit überhaupt Text in der Area ist. Ich habe aber das Gefühl ich verstehe die Frage nicht richtig xD.

Kommentar von Knogxel ,

ok. Aber wenn ich auf die TextArea zugreifen will, geht dass nicht.

gibt es evtl noch eine andere Möglichkeit als eine TextArea?

Kommentar von Coder1337 ,

Wie ich das sehe kann man mit .append(String) Text hinzufügen. Normalerweise gibt es bei solchen APIs auch immer eine editierbare Variante, die verwendet werden kann, weiß nicht. Beim googlen fand ich: https://docs.oracle.com/javase/tutorial/uiswing/components/text.html vielleicht hilft dir das... wie gesagt, da Swing älter ist, kenne ich nur das neuere JavaFX :/

Kommentar von regex9 ,

Ja. Sind alle fein säuberlich in der Dokumentation aufgelistet. Man müsste nur einmal hineinschauen.

https://docs.oracle.com/javase/tutorial/uiswing/components/index.html

Keine passende Antwort gefunden?

Fragen Sie die Community