JTextArea Zeichen begrenzen

Rambomaster

Mitglied
Hallo

Ich möchte gerne in einer JTextArea die als Eingabefeld bei einem Chat dient die Zeichen begrenzen, da es sehr unangenehm ist, wenn 100'000 Zeichen über den Chat versendet werden. Der Text den man eingibt oder auch rein kopiert, sollte auf zum Beispiel 1000 Zeichen gekürzt werden.

Kann mir jemand einen Tipp geben wie ich das realisieren soll?

mfg Rambomaster
 
Moin!
du überschreibst die insertString() Methode des Dokumentes, welchem deiner JTextArea zugeordnet ist, überprüfst die Länge des Textes, der bereits eingefügt ist und der eingefügt werden sollen.
Ungefähr so:
Code:
public class CustomDocument extends DefaultStyledDocument{


 public void insertString(int offset, String str, AttributeSet a){
   if(getLength()+str.length <= 1000)
      super.insertString(offset,str,a);
    else
       //einzufügenden Text verkürzen oder was auch immer
 }


}

....
....
JTextArea area = new JTextArea(new CustomDocument());

http://java.sun.com/j2se/1.4.2/docs/api/javax/swing/text/DefaultStyledDocument.html


Aber anstatt die Eingabe zu begrenzen, könnte man natürlich auch den Text in einzelnen Päckchen senden, falls er dir zu groß erscheint.. Der Empfänger müsste den Text dann nur zusammensetzern, bevor er ihn anzeigt..

*grüssle*
MeinerEiner
 
Zuletzt bearbeitet von einem Moderator:
Hallo,

also in SWT gibt es die Möglichkeit bei einer Textarea mit settextlimit die max anzahl zu bestimmen sowas gits doch bestimmt auch bei swing,
 
Danke für die schnelle Antwort.
Meine Klasse ist schon von JFrame abgeleitet. Wie soll ich jetzt noch von DefaultStyleDocument ableiten? Oder gibt es da noch eine andere Möglichkeit?

Gruss Rambomaster
 
Danke für die schnelle Antwort.
Meine Klasse ist schon von JFrame abgeleitet. Wie soll ich jetzt noch von DefaultStyleDocument ableiten? Oder gibt es da noch eine andere Möglichkeit?

Gruss Rambomaster

?
Du verstehst da was falsch (hoffe ich zumindest!). Die Klasse, in der du deine JTextArea plazierst, wird wohl von JFrame abgeleitet sein. Das hat doch nix mit dem eigenen Document zu tun?! Das ist ne eigene Klasse, dessen Instanz dann der TextArea zugeordnet wird...

*grüssle*
MeinerEiner
 
Hallo,

also in SWT gibt es die Möglichkeit bei einer Textarea mit settextlimit die max anzahl zu bestimmen sowas gits doch bestimmt auch bei swing,

Hmm habe ich auch schon danach gesuch, aber nichts gefunden.

?
Du verstehst da was falsch (hoffe ich zumindest!). Die Klasse, in der du deine JTextArea plazierst, wird wohl von JFrame abgeleitet sein. Das hat doch nix mit dem eigenen Document zu tun?! Das ist ne eigene Klasse, dessen Instanz dann der TextArea zugeordnet wird...

*grüssle*
MeinerEiner

Stimmt ich habe da oben was übersehen, aber mein Problem liegt eher beim kürzen des Strings. Ich habe einen einfachen KeyListener auf meine TextArea gemacht ich müsste dort nur noch den String der in der TextArea steht kürzen.
 
Und WO ist das Problem? Zeig mal den entsprechenden Code, gib eine Fehle-r/Schwierigskeitsbeschreibung. Ich weis nämlich nicht, wo das Problen sein könnte..

Zudem, in Swing gibt es keine Möglichkeit, direkt die Anzahl der Zeichen in einer TextArea zu begrenzen... Es ist aber dennoch möglich. Mein CodeBeispiel zeigt einer dieser Wege..

*grüssle*
MeinerEiner
 
Eigentlich müsste ich nur wissen wie man einen String zum Beispiel auf 1000 Zeichen verkürzt. Das würde mein Problem schon lösen. Ich denke mal das geht, ich hab nur noch nicht die richtige Methode gefunden.
 
Zurück