jTextFiled max 160 Zeichen?

edsie2011

Aktives Mitglied
Hallo ich möchte mein Fenster auf maximale eingabe von 160 zeichen begrenzen und wollte wissen wie ich das ambesten mache.

Java:
Client tw = new Client();
        try {
            tw.WriteFile(MyWinClient+"\n" + getDateTime()+"\n"+this.sendFenster.getText()+"\n");//send Fenster ist bei mir JTexField und das möchte ich auf 160 Zeichen Reduzieren
            } catch (IOException_Exception ex) {
            Logger.getLogger(Client.class.getName()).log(Level.SEVERE, null, ex);
        }

Danke
 
Zuletzt bearbeitet:

jgh

Top Contributor
na ja mit dem Codeausschnitt schreibst du den Inhalt ja in irgendein File...was willst du denn genau begrenzen?

soll in der TextArea, Textfield, oder was auch immer du nimmst, die Anzahl auf 160 begrenzt werden, oder beim Schreiben in die Datei nur die ersten 160 Zeichen permanent gesichert werden?

Fürs zweitere bietet String einige Methoden an (substring, etc) um den erhaltenen String zu kürzen, beim anderen müsstest du mit DocumentListener (glaube so heißen die) arbeiten und Eingaben ab den dem 161. Zeichen unterbinden
 
Zuletzt bearbeitet:
C

Camino

Gast
So etwas geht mit einem DocumentFilter. Wenn der erwünschte Wert (max. Anzahl an Zeichen) erreicht ist, kann nichts mehr eingegeben werden. Ausserdem kann auch noch mit einem Pattern festgelegt werden, welche Zeichen überhaupt eingegeben werden dürfen.

Hier ein Beispiel:
Java:
package formulare;

import javax.swing.text.AttributeSet;
import javax.swing.text.BadLocationException;
import javax.swing.text.DocumentFilter;

/**
 * Filter für Textfelder für bestimmte Zeichenlänge und Muster
 * @param maxChars maximal zulässige Zeichenlänge
 * @param pattern Muster für Texteingabe
 */
public class DocumentSizeFilter
extends DocumentFilter {

	// Pattern nur für Buchstaben
	public static final String TEXT_PATTERN = "[A-Za-z]+";
	
	// Pattern nur für Ziffern
	public static final String NUMBER_PATTERN = "[0-9]+";
	
	// Pattern für Dezimalzahlen mit Komma oder Punkt	
	public static final String DECIMAL_PATTERN = "[0-9.,]+";

	private final int maxCharacters;
	private final String pattern;
	    

	public DocumentSizeFilter( final int maxChars, final String pattern ) {
		maxCharacters = maxChars;
		this.pattern = pattern;
	}

	
	@Override
    public void replace( FilterBypass fb, int offs, int length, String str, AttributeSet a )
            throws BadLocationException {
		
        if ( str.matches( pattern ) && ( fb.getDocument().getLength() + str.length() - length ) <= maxCharacters || str.isEmpty() ) {
            super.replace( fb, offs, length, str, a );
        }
        
    }

}

Diesen DocumentFilter kann man dann dem Textfeld setzen und die gewünschte Zeichenanzahl und das Pattern übergeben:
Java:
...
tfNachname = new JTextField();
( ( AbstractDocument ) tfNachname.getDocument()).setDocumentFilter( new DocumentSizeFilter( 50, DocumentSizeFilter.TEXT_PATTERN ) );
...
 

bluerob

Mitglied
Hey Leute, hab das selbe Problem.
Hab aus diesem Grund die Klasse von Carmino halbwegs übernommen (ohne Pattern), aber irgendwie hat das bei meinem JTextField keine Wirkung.
Hab auch schon andere Varianten mit PlainDocument versucht, aber mein TextField bleibt auch davon unberührt.

Spielt es eine Rolle wo und wann das JTextField erscheint? Ich benutze es nämlich in einem Popup.

Hier mal der Code:

Java:
public class DocumentSizeFilter extends DocumentFilter{
    private int maxCharacters;

    public DocumentSizeFilter(int maxChars){
        maxCharacters = maxChars;
    }

    public void replace(FilterBypass fb, int offs, int length, String str, AttributeSet a) throws BadLocationException {
        if ((fb.getDocument().getLength()+str.length()-length) <= maxCharacters || str.isEmpty()) {
            super.replace( fb, offs, length, str, (javax.swing.text.AttributeSet) a);
        }
    }
}

Java:
textFieldPlayer = new JTextField();
((AbstractDocument)textFieldPlayer.getDocument()).setDocumentFilter(new DocumentSizeFilter(8));

andere Einstellungen die ich auf das TextField mache muss ich nicht posten oder? Die sollten ja keinen Einfluss haben...

Bei mir verlangt Netbeans, dass ich beim Aufruf der super Methode das AttributeSet caste. Spielt das eine Rolle?

Danke für jede Hilfe!
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
G JTextfiled - Uhrzeit eingeben AWT, Swing, JavaFX & SWT 3
A JTextFiled-Breite und Höhe ändern AWT, Swing, JavaFX & SWT 3
B JTextFiled, JCheckBox, JSpinner Eigenschaften speichern AWT, Swing, JavaFX & SWT 2
D JTextFiled Zeichenbegrenzung AWT, Swing, JavaFX & SWT 2
N €-Zeichen wird nicht akzeptiert AWT, Swing, JavaFX & SWT 4
_user_q Gibt es eine Möglichkeit, in Java alle möglichen Zeichen automatisch tippen zu lassen? AWT, Swing, JavaFX & SWT 13
Kohl Jedes Objekt einer JTable um ein Zeichen verkürzen AWT, Swing, JavaFX & SWT 7
F AWT awt KeyEvent - Zeichen direkt nach Eingabe löschen AWT, Swing, JavaFX & SWT 2
L Swing Tastatur zeichen AWT, Swing, JavaFX & SWT 4
A 2D-Grafik Zeichen werden über unabhängingen JRadioButton nicht gefüllt AWT, Swing, JavaFX & SWT 28
I JOptionPane maximale Zeichen einstellen AWT, Swing, JavaFX & SWT 2
L JavaFX ASCII Zeichen /char von KeyEvent erhalten AWT, Swing, JavaFX & SWT 5
C Zeichen eines 6 -Eckes AWT, Swing, JavaFX & SWT 1
S Zeichen ohne paint-Methode AWT, Swing, JavaFX & SWT 2
C JavaFX Tiefgestellte Zeichen in fxml AWT, Swing, JavaFX & SWT 2
B EventHandler für durch Tastenkombination erzeugte Zeichen AWT, Swing, JavaFX & SWT 3
L Ausgabe in JEditorPane mittels HTMLEditorKit zeigt auf bestimmten Systemen falsche Zeichen AWT, Swing, JavaFX & SWT 1
S Swing Warum funktioniert der automatische Zeilenumbruch mit arabischen Zeichen beim JTextPane nicht AWT, Swing, JavaFX & SWT 3
A Zeichen-Steuerelement in Swing AWT, Swing, JavaFX & SWT 0
kaoZ Swing Aktives Zeichen für Spieleprogrammierung ? AWT, Swing, JavaFX & SWT 8
D Swing Manuellen Kreis zeichen AWT, Swing, JavaFX & SWT 22
U Label zeigt nicht überall HTML Zeichen AWT, Swing, JavaFX & SWT 3
R einzelne Zeichen in jTable einlesen AWT, Swing, JavaFX & SWT 10
S SWT [TextBox] Bestimmtes Zeichen entfernen unterbinden AWT, Swing, JavaFX & SWT 3
P readLine solange es mit einem bestimmten Zeichen anfängt AWT, Swing, JavaFX & SWT 5
P Komische Zeichen beim Abspeichern von TextFelder AWT, Swing, JavaFX & SWT 2
Jats Zeichen auf mehrere JPanels AWT, Swing, JavaFX & SWT 7
P 2D-Grafik versch. Rectangles aus array von textfelder zeichen AWT, Swing, JavaFX & SWT 6
DEvent Swing JTextField Anzahl an sichtbaren Zeichen AWT, Swing, JavaFX & SWT 4
D JLabel und JPanel -> Neu zeichen?! oO AWT, Swing, JavaFX & SWT 2
Luk10 Swing Problem mit Zeichen-Thread AWT, Swing, JavaFX & SWT 8
A Rechteck zeichen AWT, Swing, JavaFX & SWT 4
Q AWT Choice ein Zeichen hinzufügen AWT, Swing, JavaFX & SWT 4
J 2D-Grafik Textbasiertes 2D Spiel, jedes Zeichen manipulierbar AWT, Swing, JavaFX & SWT 7
R 2D-Grafik auf JPanel zeichen - ohne @Override paintComponent AWT, Swing, JavaFX & SWT 6
S Thread.sleep() in einer methode fürs zeichen AWT, Swing, JavaFX & SWT 3
T Zeichen/char in Bild umwandeln und darstellen AWT, Swing, JavaFX & SWT 10
2 Bücher über Zeichen und Baumalgorithmen AWT, Swing, JavaFX & SWT 5
T Zeichen zählen JTextPane AWT, Swing, JavaFX & SWT 4
F Zeichen per Menuitem funktioniert nicht AWT, Swing, JavaFX & SWT 2
V Nur zulässige Zeichen in JTable-Zellen eintragen können AWT, Swing, JavaFX & SWT 2
P Swing Probleme beim Zeichen AWT, Swing, JavaFX & SWT 6
aze JTextfield nur so breit dass alle zeichen sichtbar sind AWT, Swing, JavaFX & SWT 2
3TageBart Ebenen in Zeichen-Programm implementieren AWT, Swing, JavaFX & SWT 9
P Zeichen abhängig davon, ob sich eine Variable geändert hat AWT, Swing, JavaFX & SWT 2
G Blinkenden Punkt zeichen AWT, Swing, JavaFX & SWT 2
G Viele Fehler beim zeichen AWT, Swing, JavaFX & SWT 5
J JTextPane mit genau 80 Zeichen breite definieren? AWT, Swing, JavaFX & SWT 3
J jTextarea Anzahl Zeichen in einer Zeile begrenzen AWT, Swing, JavaFX & SWT 2
Lazybone CMYK Zeichen AWT, Swing, JavaFX & SWT 12
H Polyline zeichen, aber wie? AWT, Swing, JavaFX & SWT 2
D jTable ausdrucken => € zeichen wird nicht richtig angezei AWT, Swing, JavaFX & SWT 7
H Problem beim zeichen eines TimeSeriesChart mit jfreechart AWT, Swing, JavaFX & SWT 5
K UNICODE ZEICHEN in den SWing-GUIs AWT, Swing, JavaFX & SWT 4
B Dreiecke zeichen AWT, Swing, JavaFX & SWT 3
D Zeichen ein Pixel mit Java2D AWT, Swing, JavaFX & SWT 15
C JFormattedTextField - nur bestimmte Zeichen zulassen AWT, Swing, JavaFX & SWT 3
F Zeichen von Linien, Rechtecken, zb wie in paint AWT, Swing, JavaFX & SWT 2
B Zeichen werden im JFormattedTextField überschrieben AWT, Swing, JavaFX & SWT 3
C PI-Zeichen im JLabel AWT, Swing, JavaFX & SWT 3
G Zeilenumbruch nach n Zeichen in JTextArea AWT, Swing, JavaFX & SWT 24
U kleiner-Zeichen JEditorPanel (war: JOptionPane) AWT, Swing, JavaFX & SWT 5
T JLayerdPane: wie etwas über eine AWT Komponente zeichen? AWT, Swing, JavaFX & SWT 2
N Tastatur Zeichen einlesen ohne sichtbares Fenster AWT, Swing, JavaFX & SWT 8
D JTextPane: "Nichtdruckbare Zeichen" anzeigen & AWT, Swing, JavaFX & SWT 4
R letztes Zeichen aus textfeld auslesen AWT, Swing, JavaFX & SWT 2
M rendern von zeichen AWT, Swing, JavaFX & SWT 4
R Zeichen-Markierungrahmen AWT, Swing, JavaFX & SWT 5
F Eingabe in JPasswordField auf vier Zeichen beschränken AWT, Swing, JavaFX & SWT 3
M Transparentes gif als extra Klasse auf einen JFrame zeichen AWT, Swing, JavaFX & SWT 17
B ComboBox: nur bestimmte Zeichen zulassen AWT, Swing, JavaFX & SWT 5
G Linien in ein Koordinatensystem zeichen AWT, Swing, JavaFX & SWT 7
H funktionen in ein koordinatensystem zeichen AWT, Swing, JavaFX & SWT 5
B Erstes Zeichen in einem String toUpperCase ??? AWT, Swing, JavaFX & SWT 4
bummerland ein zeichen nach einem zeilenumbruch einfügen AWT, Swing, JavaFX & SWT 4

Ähnliche Java Themen

Neue Themen


Oben