MVC Aktualisierung von TextArea

Status
Nicht offen für weitere Antworten.

Stillmatic

Mitglied
Nabbend!

Ich habe ein kleines Problem!

Ich frage mich gerade, wie ich die Änderungen die vom Benutzer in einem TextArea Feld durchgeführt wurden, in das Model bekomme.
Im Update vom View setzte ich die Felder auf die Werte des Models.

Ich habe ActionListener in der Controller Klasse für ein TextArea Feld!
Java:
	class textAreaChange implements KeyListener{
		@Override
		public void keyPressed(KeyEvent e) {
			
			setChanged();
			notifyObservers( model );
		}

		@Override
		public void keyReleased(KeyEvent e) {
			setChanged();
			notifyObservers( model );
		}

		@Override
		public void keyTyped(KeyEvent e) {
			setChanged();
			notifyObservers( model );
		}
			
	}

In den Funktionen update ich das View.
Doch zuvor muss ich die Daten doch in mein Model schreiben(??) !
Doch wie, wenn ich aus dem Controller heraus keinen Zugriff auf das Modell habe?

Ich möchte die Daten nach jedem Zeichen in den Variablen speichern, weil ich überprüfen muss ob das Textfeld nicht schon voll ist.
Also, ich möchte maximal 50 Zeichen zulassen!

Benötigt man dafür ein Object des Modells?
 

diggaa1984

Top Contributor
du hast ne (J?)TextArea .. das is ja ne JTextComponent, die haben alle bereits ein Document-Derivat als Model intus. Das heisst wenn du die Eingabe limitieren möchtest, kannst du dir auch eine Art LimitedCharDocument extends PlainDocument - Klasse schreiben, dort gibts die Methode insertString, welche dann immer aktiv wird, wenn der Nutzer was tippt oder einfügt.

Da kannst in der Klasse dann deinen Zähler einbauen und weitere Eingaben einfach verschlucken sozusagen .. gugg mal in die FAQ da gibts Bsp für auf Zahlen-beschränkte Docments
 

KrokoDiehl

Top Contributor
Also ein zunächst einfacher Weg wäre es tatsächlich via KeyListener und dann die Ereignisse konsumieren, wenn die Maximallänge des überschritten werden würde. Dann kommen aber Probleme, wenn man z.B. via Copy&Paste einfügt, also rate ich davon aus eigener Erfahrung ab ;)

diggaa1984s Weg über ein eigenes
Code:
java.swing.text.Document
halte ich auch für am sinnvollsten. Du erbst von einem Document (PlainDocument oder StyledDocument, jenachdem was du brauchst) und überschreibst die insert-Methode. Das Document hängst du an deine JTextComponent und fertig ist's :)

Aber warum ich schreibe ... willst du die Gesamtlänge des Textes beschränken oder die Zeilenlänge? Für letzteren Fall habe ich neulich eine Lösung gesucht und auch gefunden, die ist aber nicht so simpel.
 

Stillmatic

Mitglied
Könntest du mir nen Link zu dem Thread im Faq geben!
Suche jetzt schon 1/2 Stunde und hab es noch nicht gefunden!

thx
 

diggaa1984

Top Contributor
jtextfield-dokumentarten

da haste :D .. sind wie erwähnt Beispiele für die Beschränkung auf bestimmte Zahlen soweit wie ich mich erinnern kann. Was du machen musst, definiere in diesem Dokument ne Gesamtlänge und bei der insertString-methode fügst den text einfach ein (super.inserString(...)) solange die Gesamtlänge nicht erreich wurde.

das Document wie Kroko bereits erwähnte, an die GUI-Komponente hängen (setDocument(...))
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
G Aktualisierung einer JTable erfolgt nicht zuverlässig Allgemeine Java-Themen 14
A JNLP Datei und Aktualisierung nur jedes 2x Allgemeine Java-Themen 3
G Aktualisierung erst nach minimiertem Browser Allgemeine Java-Themen 6
N Problem mit Aktualisierung eines JFrames Allgemeine Java-Themen 16
B Aktualisierung einer JList Allgemeine Java-Themen 9
P Probleme mit Aktualisierung Textfeld im Applet Allgemeine Java-Themen 4
S Problem mit einem Timer (Aktualisierung etc.) Allgemeine Java-Themen 2
S Textarea Allgemeine Java-Themen 7
T Textarea nach nur 1 wort durchsuchen Allgemeine Java-Themen 3
T Textarea text wird immer überschrieben Allgemeine Java-Themen 4
J TextArea einlesen, mit string Allgemeine Java-Themen 2
MiMa Liste von Pfaden in eine textArea schreiben Allgemeine Java-Themen 7
C Zahl im Textarea anzeigen lassen Allgemeine Java-Themen 8
T TextArea, JTextPane, JEditorPane Allgemeine Java-Themen 11
S zeilenumbruch in TextArea Allgemeine Java-Themen 5
H x,y von Markierung in TextArea Allgemeine Java-Themen 5
G einzelne zeilen aus textArea auslesen Allgemeine Java-Themen 8
1 TextArea: Repaint zu spät Allgemeine Java-Themen 4
B Formatieren von text in ner TextArea Allgemeine Java-Themen 6
S Word-Dokument in Textarea anzeigen Allgemeine Java-Themen 2

Ähnliche Java Themen

Neue Themen


Oben