Swing TextArea mit nicht-editierbarem Text

jf

Bekanntes Mitglied
Hallo, ich habe ein Textfeld, in welchem der Nutzer einen Kommentar hinterlegen kann.
Nach einer Operation soll dieser Text unveränderbar (und idealerweise in grau) sein. Aber der Nutzer soll trotzdem weitere Kommentare hinzufügen können. Wie würdet ihr das am ehesten lösen?
Gibt es hierfür eine Möglichkeit mit nur einem Textfeld zu arbeiten - oder verwende ich doch besser deren zwei?
 

jf

Bekanntes Mitglied
Wie meinen? Unveränderbarer Text und hinzufügen von Kommentaren klingt widersprüchlich.
Ist es aber nicht: der alte Kommentar soll unveränderbar sein - aber man soll neue Kommentare hinzufügen können.
Sprich: die Editierung in z. B. den ersten 3 Zeilen (je nach länge des ersten Kommentares) verhindern.
 

Schandro

Top Contributor
Das geht mithilfe eines eigenen
Code:
DocumentFilter
:
Java:
			JTextArea textArea = new JTextArea("abc\n123\nlorem ipsum");
			final int editableOffset = 8;
			((AbstractDocument)text.getDocument()).setDocumentFilter(new DocumentFilter(){
				@Override
				public void insertString(FilterBypass fb, int offset, String string, AttributeSet attr) throws BadLocationException {
					if(offset>=editableOffset) {
						fb.insertString(offset, string, attr);
					}
				}
				@Override
				public void replace(FilterBypass fb, int offset, int length, String text, AttributeSet attrs) throws BadLocationException {
					if(offset>=editableOffset) {
						fb.replace(offset, length, text, attrs);
					}
				}
				@Override
				public void remove(FilterBypass fb, int offset, int length) throws BadLocationException {
					if(offset>=editableOffset) {
						fb.remove(offset, length);
					}
				}
			});
In diesem Beispiel kann der User den Inhalt der Textarea erst ab dem 8. Zeichen verändern, d.h. hinter dem 2. Zeilenumbruch.


**************************************************************


EDIT:
Ich hab das Beispiel mal so erweitert das es ein JTextPane benutzt um den nicht editierbaren Teil grau darzustellen:
Java:
			JTextPane textPane = new JTextPane();

			StyleContext styleContext = new StyleContext();
			DefaultStyledDocument document = new DefaultStyledDocument(styleContext);
			textPane.setDocument(document);

			Style notEditableStyle = styleContext.addStyle("not_editable", null);
			notEditableStyle.addAttribute(StyleConstants.Foreground, Color.GRAY);

			String comment = "Lorem Ipsum\ndolor sit amet\n";
			String editable = "consectetuer adipiscing elit";
			try {
				document.insertString(document.getLength(), comment, notEditableStyle);
				document.insertString(document.getLength(), editable, null);
			} catch (BadLocationException e) {
				// won't happen
				e.printStackTrace();
			}

			final int editableOffset = comment.length();
			document.setDocumentFilter(new DocumentFilter(){
				@Override
				public void insertString(FilterBypass fb, int offset, String string, AttributeSet attr) throws BadLocationException {
					if(offset>=editableOffset) {
						fb.insertString(offset, string, attr);
					}
				}
				@Override
				public void replace(FilterBypass fb, int offset, int length, String text, AttributeSet attrs) throws BadLocationException {
					if(offset>=editableOffset) {
						fb.replace(offset, length, text, attrs);
					}
				}
				@Override
				public void remove(FilterBypass fb, int offset, int length) throws BadLocationException {
					if(offset>=editableOffset) {
						fb.remove(offset, length);
					}
				}
			});
 
Zuletzt bearbeitet:

Marco13

Top Contributor
Theoretisch kann man einen DocumentListener dranhängen und dann bei "onTextUpdate" oder wie das heißt sicherstellen, dass der fixe Text immer erhalten bleibt, aber ... wenn man zwei TextFields (Areas?!) verwenden kann, und es damit innerhalb von 1 Minute statt 1 Stunde hinschreiben kann, ... ... ..
 

Schandro

Top Contributor
Theoretisch kann man einen DocumentListener dranhängen und dann bei "onTextUpdate" oder wie das heißt sicherstellen, dass der fixe Text immer erhalten bleibt, aber ... wenn man zwei TextFields (Areas?!) verwenden kann, und es damit innerhalb von 1 Minute statt 1 Stunde hinschreiben kann, ... ... ..
Da mach ich mir einmal die Mühe nen kompletten Code zu posten fürs einfache Strg+C und dann sowas :(

Meine Lösung ist viel schöner als 2 Textareas ;( :D
 

Marco13

Top Contributor
Hoppala, den letzten Beitrag hatte ich nicht gesehen (hatte kurz Pause gemacht) ... das hätte ich natürlich dann so nicht geschrieben ... :oops: Wenn man's einfach Copy&Pasten kann, ist mein letztes Argument ja auch ohnehin [c]void[/c] :)
 

jf

Bekanntes Mitglied
Ähnliche Java Themen
  Titel Forum Antworten Datum
ProggersWorld JavaFX TextArea BackgroundImage wird nicht angezeigt AWT, Swing, JavaFX & SWT 3
K Textarea aktuallisiert sich nicht, nach Auswahl (Itemlistener) AWT, Swing, JavaFX & SWT 3
K JavaFX: TextArea updated nicht AWT, Swing, JavaFX & SWT 7
MrSnake JavaFX TextArea updated nicht AWT, Swing, JavaFX & SWT 22
El_Lobo Swing Swing TextArea und JTextField werden nicht aktualisiert AWT, Swing, JavaFX & SWT 2
R Textarea zeigt Text nicht an AWT, Swing, JavaFX & SWT 5
P Swing Methodenaufruf beeinflusst TextArea nicht. AWT, Swing, JavaFX & SWT 6
D Swing [BoxLayout] Nur TextArea und nicht TextField vergroessen AWT, Swing, JavaFX & SWT 2
V Hilfe :( bekomme textarea nicht versetzt AWT, Swing, JavaFX & SWT 2
D setCaretPosition, nicht-editierbare TextArea AWT, Swing, JavaFX & SWT 8
S TextArea zeigt String nicht richtig an AWT, Swing, JavaFX & SWT 4
L TextArea Zeichenabstand gleich machen AWT, Swing, JavaFX & SWT 8
D JavaFX TextArea Probleme bei langen Zeilen AWT, Swing, JavaFX & SWT 1
D Hohe Prozessorauslastung bei Ausgabe auf TextArea AWT, Swing, JavaFX & SWT 2
N Einer TextArea ein ScrollPane hinzufügen AWT, Swing, JavaFX & SWT 8
N Textdatei GUI, Text in Textarea anzeigen mehrere Zeilen AWT, Swing, JavaFX & SWT 1
Hatsi09 TextArea formattieren AWT, Swing, JavaFX & SWT 4
ralfb1105 JavaFX MVC: Thread in Model Class mit Ausgabe in TextArea AWT, Swing, JavaFX & SWT 10
E Eingabe von Zahlen in TextArea AWT, Swing, JavaFX & SWT 2
M JavaFX TextArea disabled - ScrollBar enabled AWT, Swing, JavaFX & SWT 3
G Probleme mit TextArea AWT, Swing, JavaFX & SWT 5
R Java FX - Fxml - relative Größenangaben für Breite und Höhe einer TextArea AWT, Swing, JavaFX & SWT 8
R Swing Durch JComboBox-Item eine TextArea aktualisieren AWT, Swing, JavaFX & SWT 2
N JavaFX TextArea Updaten bevor Prozess gestartet wird AWT, Swing, JavaFX & SWT 7
B Java FX FXML Textarea SceneBuilder als XML Editor AWT, Swing, JavaFX & SWT 1
T JavaFX System.out.println in TextArea AWT, Swing, JavaFX & SWT 15
F JavaFX JavaFX HTMLEditor-Eingabe in Textarea als HTML anzeigen AWT, Swing, JavaFX & SWT 2
E To get a color text on the TextArea AWT, Swing, JavaFX & SWT 4
E To get color text on the TextArea AWT, Swing, JavaFX & SWT 5
S passende PaintComponent ? Zeichnen in TextArea mit Scrollpane ? AWT, Swing, JavaFX & SWT 2
E Swing Error icon in der TextArea AWT, Swing, JavaFX & SWT 1
thobren JavaFX textarea nach setPrefRowCount Ansicht aktualisieren AWT, Swing, JavaFX & SWT 1
thobren JavaFX Inhalte aus dynamischen vbox mit TextArea auslesen AWT, Swing, JavaFX & SWT 9
thobren Swing Im JPanel wird nur TextArea gelöscht AWT, Swing, JavaFX & SWT 13
J JavaFX TextArea dynamisch Icon im Background anzeigen AWT, Swing, JavaFX & SWT 2
M JavaFX TextArea einzelne Buchstaben färben AWT, Swing, JavaFX & SWT 3
M JavaFX TextArea richtig formatieren AWT, Swing, JavaFX & SWT 4
S ScrollPane in Textarea und auf Panel AWT, Swing, JavaFX & SWT 4
S Die Rücktaste und Entfernen in einer Textarea blockieren AWT, Swing, JavaFX & SWT 3
S TextArea get Selected row(Text) AWT, Swing, JavaFX & SWT 6
F textarea lässt panel verschwinden AWT, Swing, JavaFX & SWT 4
V Swing Update Textarea AWT, Swing, JavaFX & SWT 2
E TextArea - Maximale Zeichenanzahl AWT, Swing, JavaFX & SWT 2
N Swing teilstring in textarea fett machen AWT, Swing, JavaFX & SWT 13
W Vergleich zweier Strings und schreiben in Textarea AWT, Swing, JavaFX & SWT 12
R AWT TextArea schreibunfähig machen AWT, Swing, JavaFX & SWT 5
J Werkzeugleiste für TextArea? AWT, Swing, JavaFX & SWT 10
M TextArea über mehrere Zeilen - wie Zeileanzahl abfragen? AWT, Swing, JavaFX & SWT 5
S Textarea und Enter AWT, Swing, JavaFX & SWT 5
H TextArea zeigt kein Text an AWT, Swing, JavaFX & SWT 6
S Frage zu TextArea AWT, Swing, JavaFX & SWT 2
C TextArea Ausgabe immer ganz oben AWT, Swing, JavaFX & SWT 3
C Konsolenausgabe in TextArea ausgeben AWT, Swing, JavaFX & SWT 8
S TextArea ausgabe ohne JFrame zu implementieren AWT, Swing, JavaFX & SWT 2
M Swing Eine andere Klasse über Button starten und in TextArea ausgeben AWT, Swing, JavaFX & SWT 13
M Inhalt aus TextArea verarbeiten AWT, Swing, JavaFX & SWT 4
A Swing Text von System.out.printIn in eine TextArea übergen AWT, Swing, JavaFX & SWT 12
S Sobald ich TextArea mit Text fülle alles weg? AWT, Swing, JavaFX & SWT 5
P TextArea Größenänderung AWT, Swing, JavaFX & SWT 4
M problem mit keylistener/textarea AWT, Swing, JavaFX & SWT 6
H anderes font in textarea AWT, Swing, JavaFX & SWT 2
E Datei in TextArea anzeigen AWT, Swing, JavaFX & SWT 12
Luy Per TAB-Taste aus TextArea wieder raus? AWT, Swing, JavaFX & SWT 5
H AWT TextArea, TextListener AWT, Swing, JavaFX & SWT 5
W JTextArea/TextArea kriegt keinen Fokus AWT, Swing, JavaFX & SWT 6
A Strings an Textarea anderer Klasse append(en) AWT, Swing, JavaFX & SWT 12
U Problem mit dem TextArea.appen()- Befehl AWT, Swing, JavaFX & SWT 2
G Textarea zeigt Text erst am Schluss an AWT, Swing, JavaFX & SWT 2
W JTextArea vs TextArea AWT, Swing, JavaFX & SWT 3
K TextArea auf Scrollpane AWT, Swing, JavaFX & SWT 3
A Dateien in TextArea ausgeben AWT, Swing, JavaFX & SWT 6
G Textarea soll automatisch mitrollen AWT, Swing, JavaFX & SWT 2
G Feste Größe einer TextArea AWT, Swing, JavaFX & SWT 2
G Kontextmenü zum kkopieren in einer TextArea AWT, Swing, JavaFX & SWT 5
D GUI + TextArea + inhalt der wörter zählen AWT, Swing, JavaFX & SWT 4
M TextArea relativ zur Fenstergröße AWT, Swing, JavaFX & SWT 14
Y Zahlen aus einer Textarea auslesen AWT, Swing, JavaFX & SWT 2
V textarea Problem Positionierung AWT, Swing, JavaFX & SWT 2
G textarea.read funzt net in Jar-Datei AWT, Swing, JavaFX & SWT 7
K Center Text in TextArea AWT, Swing, JavaFX & SWT 8
ModellbahnerTT Ersatz für Textarea AWT, Swing, JavaFX & SWT 13
K Zeilen von TextArea auswählen AWT, Swing, JavaFX & SWT 3
C TextArea Problem :( TextArea über komplettem JFrame AWT, Swing, JavaFX & SWT 2
S Text in Textarea über empfangenen Socketstream anzeigen AWT, Swing, JavaFX & SWT 4
M Problem mit Layout wegen Textarea AWT, Swing, JavaFX & SWT 3
F Scrollpane scrollt immer zur TextArea AWT, Swing, JavaFX & SWT 8
F Graphics2D scale und Positionierung einer TextArea AWT, Swing, JavaFX & SWT 8
J TextArea unkontrollierbar AWT, Swing, JavaFX & SWT 4
G toString -> TextArea AWT, Swing, JavaFX & SWT 2
F Einlesen von text in textArea mittels for-schleife AWT, Swing, JavaFX & SWT 3
L TextArea AWT, Swing, JavaFX & SWT 6
X textarea updaten bevor eine Methode aufegerufen wird AWT, Swing, JavaFX & SWT 6
G keyListener & textarea AWT, Swing, JavaFX & SWT 2
C Text in TextArea gestalten AWT, Swing, JavaFX & SWT 2
M Farben im TextArea AWT, Swing, JavaFX & SWT 5
N TextArea positionieren AWT, Swing, JavaFX & SWT 3
P TextArea zeilenumbruch AWT, Swing, JavaFX & SWT 7
André B. formatierung in TextArea AWT, Swing, JavaFX & SWT 7
C Textarea kontinuerlich updaten AWT, Swing, JavaFX & SWT 3
J TextArea begrenzen AWT, Swing, JavaFX & SWT 6

Ähnliche Java Themen

Neue Themen


Oben