Zeilenumbruch nach n Zeichen in JTextArea

Status
Nicht offen für weitere Antworten.
G

Gast

Gast
Hallo,

Gibt es eine Möglichkeit bei einer JTextArea einen Zeilenumbruch nach einer bestimmten Zeichenanzahl, z.B. 100 Zeichen, zu erzwingen (ohne manuelll \n in den Text einzufügen)?

Habe schon an verschiedenen Stellen gesucht, aber nichts gefunden, ich hoffe hier kann mir jemand weiterhelfen.

Danke schlonmal im Voraus.
 

bummerland

Top Contributor
nein so nicht, aber schau dir mal die beiden Methoden an:
setLineWrap(boolean wrap)
Sets the line-wrapping policy of the text area.
setWrapStyleWord(boolean word)
Sets the style of wrapping used if the text area is wrapping lines.
 
G

Gast

Gast
Die Funktionen nützen mir leider nichts.

setLineWrap(boolean wrap) (de)aktiviert nur das Wrapping und
setWrapStyleWord(boolean word) sorgt dafür, dass nicht mitten in Wörtern umgebrochen wird.

Dabei wird jedoch immer umgebrochen wenn das Ende der Textarea erreicht ist und nicht nach einer bestimmten Zeichenzahl.

Trotzdem Danke
 

Sky

Top Contributor
Workaraound: Nimm eine Blockschriftart und definier die Breite deines TextArea auf "Buchstabenbreite * 100"
 

Sky

Top Contributor
Dann ist die Vorgabe m.E. nicht zu erfüllen.

- JTextArea muss verwendet werden
- Umbruch nach 100 Zeichen
- ohne manuelll \n einzufügen
- Schriftart beibehalten

Bei diesen Sachverhalt kann man m.E. höchstens 3 der 4 Anforderungen erfüllen (naja, mit entsprechendem Aufwand geht's vielleicht doch irgendwie...)
 

thE_29

Top Contributor
Das ist eh easy...

Einen Textlistener drauf, bzw irgendnen Listener...

Dann musst du den Inhalt mittels getText() holen!

Via String.split("\n") lässt du es dir mal auf Zeilen aufteilen..

Du nimmst immer das letzte Objekt und siehst nach ob die String.length() >100 Zeichen sind, falls ja wird ein \n eingefügt und via setText wieder draufgeklebt(manuell hin oder her.. irgendwer muss das mal einfügen.. außerdem ist manuell für mich wenn man selber enter drückt)

So würds ich machen!
 

Sky

Top Contributor
Funktioniert aber so nur, wenn das Editieren in der Area nicht erlaubt ist... sonst können Zeilen dadurch zu kurz werden, dadurch dass jemand Zeichen "mitten im Text" löscht...
 
G

Gast

Gast
nee, das wird wohl nix...
Editieren ist erlaubt, es scheint also keine vernünftige Lösung zu geben. Mal schauen was ich da mache.

Thx to all
 

thE_29

Top Contributor
Wieso??

Das ist einfach rumrechnerei...


Du musst dir halt den ganzen Text tmp speichern und dann abgleichen wo ein Zeichen fehlt.. Somit weißt du wo du was ändern musst...


Es ist schwer und es gibt viele Bedingungen, nur machbar isses...
 

Sky

Top Contributor
sehe ich auch so.

außerdem gibt es eine Lösung, die relativ einfach umzusetzen ist:
gucken, wo geändert wurde
-> am ende: the_29's erste Lösung
-> mittendrin: alle \n entfernen und alle 100 Zeichen neue setzen

Guck Dir in dem Zusammenhang vielleicht mal die Klasse Document an.
 
G

Gast

Gast
mittendrin: alle \n entfernen und alle 100 Zeichen neue setzen
Das kann ich auch nicht machen, schließlich kann auch der User Zeilen umbrechen, und die sollen schließlich erhalten bleiben.

Das ist einfach rumrechnerei...
Ist schon klar, nur der damit verbundene Aufwand kommt für mich z.Z nicht in Frage. Ich hatte gehofft, dass es eine einfache Lösung gibt z.B. eine Methode wie lineWrappingAfter(int charsPerRow)

Aber mir fällt da gerade noch was anderes auf:

- JTextArea muss verwendet werden
- Umbruch nach 100 Zeichen
- ohne manuelll \n einzufügen
- Schriftart beibehalten

Wüsstest du denn eine Lösung ohne JTextArea aber mit den anderen Anforderungen? Es muss nämlich nicht zwingend diese Komponente sein.
 

thE_29

Top Contributor
Ggf, JtextPane anschaun!!


Wegen dem Zeilenumbruch (liest meine Beiträge überhaupt einer??)



Du merkst dir nach jedem gedrückten Zeichen den Text in einer tmp Variable!

Änderst du etwas MITTEN im Text, so vergleichst du es mit deinem alten (tmp) Text und findest dann den Unterschied somit raus...

Ergo, weißt du wo er was geändert hat und du kannst somit neu berechnen (für zB zeilenumbruch), etc.
 
G

Gast

Gast
Also gehen wir mal davon aus wir haben zwei Zeilen, eine mit 100 Zeichen und die zweite mit 50. Jetzt löscht der Nutzer in der ersten Zeile ein Zeichen. Dank der Zwischenspeicherung kann ich diese Änderung zwar erkennen, aber das Programm weiß jetzt nicht ob es den Umbruch jetzt eins nach rechts verschieben muss (so dass in der ersten Zeile weiterhin 100 stehen und in der zweiten 49) oder ob der Umbruch bleiben muss wo er ist (so dass in der ersten 99 stehen und in der zweiten 50), weil ihn der User selbst gesetzt hat.
 

Sky

Top Contributor
Du musst einerseits genau das Speichern, was der User eingeben hat (inkl. alles CR/LF) und nach jeder Eingabe die Usereingabe prüfen usw. um den neuen String zu bekommen. (String#split(\n) und alle Zeilen > 100 Zeichen nochmal trennen)
 

Ey'n G

Mitglied
Das Problem ist doch, dass ich vom User gesetzte \n nicht von denen unterscheiden kann die das Programm setzt.
 

Ey'n G

Mitglied
Das Attribut columns ist für die TextArea nur ein Anhaltspunkt wie breit sei sein sollte. Es wird dabei aus der Schriftart die optimale Breite ausgerechnet. Da meine Schrift aber unterschiedlich große Zeichen hat, kann es passieren (genauer: wird es passieren), dass in manchen Zeilen ein paar Zeichen mehr, in anderen weniger stehen.
 

Sky

Top Contributor
Ey'n G hat gesagt.:
Das Problem ist doch, dass ich vom User gesetzte \n nicht von denen unterscheiden kann die das Programm setzt.
Deshalb musst Du die User-Eingabe in einem String oder Stringbuffer speichern (inkl. "\n"). Dann kannst du per String#split("\n") ermitteln, wie der Text im Orignal aussehen würde.
Dann gehst Du das String[] welches split Dir liefert durch und guckst, welche Zeilen immer noch mehr als 100 Zeichen haben, diese bekommen entsprechende "\n"'s. Dabei wird der Original-Text (also was der Benutzer eingeben hat und was Du nochmal in einem String/Stringbuffer abgelegt hast) nicht geändert!
 

Ey'n G

Mitglied
Ich habe also das Textfeld, mit der korrekten Formatierung und einen Stringbuffer mit der orginal User-Eingabe.
Aber wo bekomme ich diese orginal User-Eingabe her. Vor der ersten Formatierung kann ich einfach den Inhalt des Textfeldes kopieren, aber danach nicht mehr, denn dann würden ja die \n des Programmes mitkopiert werden.
 

Sky

Top Contributor
Kopier sie doch einfach nicht aus dem Textfeld, sondern häng' Dir einen KeyListener ran und fang die Events ab
 

Ey'n G

Mitglied
Dann bekomme ich mit welchen Key der User drückt, und wo (an welcher Position meines Vergleich-Strings) füge ich das Zeichen dann ein?
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
bummerland ein zeichen nach einem zeilenumbruch einfügen AWT, Swing, JavaFX & SWT 4
B Swing JEditorPane ohne Zeilenumbruch nach InputStream AWT, Swing, JavaFX & SWT 2
S Swing jTextPaine kein Zeilenumbruch nach setText() AWT, Swing, JavaFX & SWT 9
C Zeilenumbruch in einem JTextPane nach einem vorgegebenen cm AWT, Swing, JavaFX & SWT 2
M Swing Cell Renderer für Zeilenumbruch in JTable AWT, Swing, JavaFX & SWT 0
M Dynamische Zellengröße und Zeilenumbruch AWT, Swing, JavaFX & SWT 7
D Zeilenumbruch in einer JTable AWT, Swing, JavaFX & SWT 9
W Swing JTable Zeilenumbruch innerhalb einer Zelle AWT, Swing, JavaFX & SWT 3
T JTextPane ignoriert HTML Zeilenumbruch <br> tag wegen eigenem HTMLEditorKit AWT, Swing, JavaFX & SWT 5
E JavaFX TableView mit Zeilenumbruch in Zellen AWT, Swing, JavaFX & SWT 5
X JTextPane automatischer Zeilenumbruch IM Wort AWT, Swing, JavaFX & SWT 2
S Swing Warum funktioniert der automatische Zeilenumbruch mit arabischen Zeichen beim JTextPane nicht AWT, Swing, JavaFX & SWT 3
S Swing Automatischer Zeilenumbruch bei JTextPanes AWT, Swing, JavaFX & SWT 2
A Zeilenumbruch per button AWT, Swing, JavaFX & SWT 5
S Zeilenumbruch jTextArea mit toString AWT, Swing, JavaFX & SWT 2
S Swing Zeilenumbruch in JTable Zellen AWT, Swing, JavaFX & SWT 3
R JavaFX Automatischer Zeilenumbruch in Text AWT, Swing, JavaFX & SWT 13
B SWT Text - zeilenumbruch AWT, Swing, JavaFX & SWT 2
N Swing JTree TreeCellRenderer mit html und automatischen Zeilenumbruch AWT, Swing, JavaFX & SWT 8
T Nimbus JButton: Zeilenumbruch korrigieren? AWT, Swing, JavaFX & SWT 9
B Swing Zeilenumbruch in Graphics AWT, Swing, JavaFX & SWT 20
O JOptionPane.showMessageDialog mit automatischem Zeilenumbruch AWT, Swing, JavaFX & SWT 9
F Jgrid Zeilenumbruch AWT, Swing, JavaFX & SWT 10
GianaSisters Swing JTable Zellen intelligenter Zeilenumbruch AWT, Swing, JavaFX & SWT 4
C Zeilenumbruch von JTextPane wird nicht erkannt AWT, Swing, JavaFX & SWT 2
Zettelkasten drawString() Zeilenumbruch AWT, Swing, JavaFX & SWT 2
P LayoutManager Zeilenumbruch im Panel AWT, Swing, JavaFX & SWT 6
N Swing JTable - Problem mit Zeilenumbruch AWT, Swing, JavaFX & SWT 6
Spot84 swt label zeilenumbruch will nicht funktionieren AWT, Swing, JavaFX & SWT 1
H SWT Zeilenumbruch in List AWT, Swing, JavaFX & SWT 9
K Swing jTextPane zeilenumbruch AWT, Swing, JavaFX & SWT 2
S Zeilenumbruch in MsgBox AWT, Swing, JavaFX & SWT 13
eskimo328 JTable Zeilenumbruch im Header AWT, Swing, JavaFX & SWT 2
A JLabel und Zeilenumbruch - Nicht das Übliche AWT, Swing, JavaFX & SWT 4
G Buttonbeschreibung mit Zeilenumbruch AWT, Swing, JavaFX & SWT 3
D Toolbars und Zeilenumbruch (benutze FlowLayout) AWT, Swing, JavaFX & SWT 2
M Zeilenumbruch bei MessageFormat gesucht AWT, Swing, JavaFX & SWT 10
G Tooltip Zeilenumbruch AWT, Swing, JavaFX & SWT 13
7 Zeilenumbruch in Textfeld AWT, Swing, JavaFX & SWT 3
M JLabel Zeilenumbruch AWT, Swing, JavaFX & SWT 10
M setLineWrap() + echten Zeilenumbruch AWT, Swing, JavaFX & SWT 4
I Automatischer Zeilenumbruch in JTextArea? AWT, Swing, JavaFX & SWT 5
D Zeilenumbruch in einer JTable AWT, Swing, JavaFX & SWT 3
G JEditorPane Zeilenumbruch verhindern AWT, Swing, JavaFX & SWT 2
G JLabel mit Zeilenumbruch AWT, Swing, JavaFX & SWT 6
G Fehleranzeige im Textfeld bei Zeilenumbruch AWT, Swing, JavaFX & SWT 4
S JLabel zeilenumbruch ? geht das in JDialog? AWT, Swing, JavaFX & SWT 2
O Zeilenumbruch erzwingen (FlowLayout? AWT, Swing, JavaFX & SWT 1
A Automatischen Zeilenumbruch AWT, Swing, JavaFX & SWT 5
R JTree: Zeilenumbruch in Node AWT, Swing, JavaFX & SWT 6
P TextArea zeilenumbruch AWT, Swing, JavaFX & SWT 7
T Zeilenumbruch auf JButton AWT, Swing, JavaFX & SWT 6
M JTextPane - Zeilenumbruch verhindern stoppen deaktivieren :) AWT, Swing, JavaFX & SWT 5
T JTable, Zeilenumbruch in Zellen AWT, Swing, JavaFX & SWT 23
M Jeditorpane + zeilenumbruch AWT, Swing, JavaFX & SWT 2
M Zeilenumbruch beim JLabel AWT, Swing, JavaFX & SWT 3
N JTextArea Zeilenumbruch erzwingen AWT, Swing, JavaFX & SWT 2
D [SWT] Zeilenumbruch für Tabelle AWT, Swing, JavaFX & SWT 4
R Zeilenumbruch in JTable AWT, Swing, JavaFX & SWT 2
bernd Zeilenumbruch in JEditorPane AWT, Swing, JavaFX & SWT 10
E Zeilenumbruch in einem AWT TextField AWT, Swing, JavaFX & SWT 2
R JTextPane: Zeilenumbruch AWT, Swing, JavaFX & SWT 3
G JTable Zeilenumbruch innerhalb einer Zelle bzw. columnHeader AWT, Swing, JavaFX & SWT 1
G Zeilenumbruch in einer SWT TableItem AWT, Swing, JavaFX & SWT 1
berserkerdq2 Buttons und Shapes sehen ja nach Screengröße klein oder zu groß aus, jemand eine Idee, was man tun kann? AWT, Swing, JavaFX & SWT 1
W JEditorPane textausrichtung nach settext funktioniert nicht mehr AWT, Swing, JavaFX & SWT 11
H Swing Buttons erst nach Klick sichtbar AWT, Swing, JavaFX & SWT 13
H JavaFX Fenstergröße nach maximieren erkennen AWT, Swing, JavaFX & SWT 6
D Swing Komponenten nicht sichtbar nach Start AWT, Swing, JavaFX & SWT 12
T Elemente auf vorheriger Stage, nach Wechsel der Stage ansprechen AWT, Swing, JavaFX & SWT 32
berserkerdq2 Mein Rechteck hat 4 Seiten, ich soll je nach dem, welche Seite berührt wurde, etwas ausführen, wie prüfe ich das? AWT, Swing, JavaFX & SWT 12
Ernesto95 JavaFX Return Value nach Beendigung einer Animation AWT, Swing, JavaFX & SWT 15
K Textarea aktuallisiert sich nicht, nach Auswahl (Itemlistener) AWT, Swing, JavaFX & SWT 3
M Nach Export als Runnable Jar wird css nicht merh gefunden AWT, Swing, JavaFX & SWT 22
P kein Scrollen nach affinertransformation bei mouse dragged AWT, Swing, JavaFX & SWT 2
M Wieso verändert sich die Framerate nach erneutem Starten des AnimationTimer? AWT, Swing, JavaFX & SWT 18
T ListView nach Erweiterung Fehler in CellFactory AWT, Swing, JavaFX & SWT 8
N JavaFX Tableview nach Löschen von Element falscher Index AWT, Swing, JavaFX & SWT 4
B JavaFX TextInputDialog: Focus auf Eingabefeldinhalt setzen und nach OK Inhalt leeren AWT, Swing, JavaFX & SWT 5
VPChief Nach abspielen von Sound reagiert das Program nichtmehr AWT, Swing, JavaFX & SWT 9
VPChief Swing Eclipse: Nach Exportieren, Button funktioniert nicht mehr AWT, Swing, JavaFX & SWT 26
E Swing Componenten werden nach Änderung des display modes verzerrt dargestellt AWT, Swing, JavaFX & SWT 8
L JavaFX Exception nach includieren einer fxml // nested controller AWT, Swing, JavaFX & SWT 1
Zrebna Problem bei Eventhandling (Value soll nach jedem erneutem Klick gelöscht werden) AWT, Swing, JavaFX & SWT 4
R Swing JTextField - Schriftgröße je nach Länge und Größe ändern AWT, Swing, JavaFX & SWT 0
F AWT awt KeyEvent - Zeichen direkt nach Eingabe löschen AWT, Swing, JavaFX & SWT 2
L Komponenten eines Panels werden erst nach Klick darauf angezeigt AWT, Swing, JavaFX & SWT 13
K JavaFX Element in HBOX nach rechts verschieben AWT, Swing, JavaFX & SWT 2
S JavaFX Slider freezt nach Benutzung AWT, Swing, JavaFX & SWT 3
M Swing GUI wird nach invokeLater() langsam AWT, Swing, JavaFX & SWT 19
Fiedlerdan Image-Pfad Probleme nach Export aus Eclipse AWT, Swing, JavaFX & SWT 31
T JavaFX Nach Zoomen wird an falscher Stelle gezeichnet AWT, Swing, JavaFX & SWT 0
S Ausgabe aktualisiert sich nur nach 2. Klick AWT, Swing, JavaFX & SWT 17
F JavaFX Zustand der CheckMenuItems behalten nach Programmneustart AWT, Swing, JavaFX & SWT 7
J jButton soll nach klicken eine Variable um 1 erhöhen AWT, Swing, JavaFX & SWT 2
S Nach scrollen verschwindet das zuvor im JPanel gezeichnete AWT, Swing, JavaFX & SWT 2
stroggi Swing Suche nach Kurveneditor (UI-Element) AWT, Swing, JavaFX & SWT 1
Neumi5694 java.awt.Window nach javafx.stage.Window AWT, Swing, JavaFX & SWT 1
L Swing Komponenten erst nach Resize sichtbar AWT, Swing, JavaFX & SWT 2
F Swing Frame nach vorne holen AWT, Swing, JavaFX & SWT 2

Ähnliche Java Themen

Neue Themen


Oben