limitierte Zeichenanzahl in JTextField und JComboBox

eagle

Mitglied
Hallo ihr JavaGurus,

weiss jemand wie ich die maximale Anzal der zugelassenen Zeichen in einem JTextField und einer JComboBox festlegen kann?

So das z.B. maximal 5 Zeichen eingegeben werden können, die weiteren werden dan einfach ignoriert bis wieder eins gelöst wird.

Muss ich dies über den KeyListener machen oder gibt es da noch andere möglichkeiten?

besten Dank für allfällige Antworten ^^
 
Hallo!

Zum Beispiel so:
Code:
   /**
    * 
    */
   package de.tutorials;
   
   import javax.swing.JFrame;
   import javax.swing.JTextField;
   import javax.swing.text.AttributeSet;
   import javax.swing.text.BadLocationException;
   import javax.swing.text.DefaultStyledDocument;
   
   /**
    * @author Tom
    * 
    */
   public class LimitedTextComponentExample extends JFrame {
   
   	public LimitedTextComponentExample() {
   		super("LimitedTextComponentExample");
   		setDefaultCloseOperation(EXIT_ON_CLOSE);
   
   		JTextField txt = new JTextField(5);
   
   		txt.setDocument(new DefaultStyledDocument() {
 			public void insertString(int offs, String str, AttributeSet a)
 					throws BadLocationException {
 				if ((this.getLength() + str.length()) <= 5) {
 					super.insertString(offs, str, a);
   				}
   			}
   		});
   
   		add(txt);
   
   		pack();
   		setVisible(true);
   	}
   
   	/**
   	 * @param args
   	 */
   	public static void main(String[] args) {
   		new LimitedTextComponentExample();
   	}
   }

oder so:
Code:
  /**
   * 
   */
  package de.tutorials;
  
  import java.text.ParseException;
  
  import javax.swing.JFormattedTextField;
  import javax.swing.JFrame;
  import javax.swing.text.MaskFormatter;
  
  /**
   * @author Tom
   * 
   */
  public class LimitedTextComponentExample extends JFrame {
  
  	public LimitedTextComponentExample() {
  		super("LimitedTextComponentExample");
  		setDefaultCloseOperation(EXIT_ON_CLOSE);
  
  		JFormattedTextField txt = null;
  		try {
 			//5 mal ? -> Boardsoftware zerhackt mehrere aufeinanderfolgende Fragezeichen...
 			txt = new JFormattedTextField(new MaskFormatter("?"));
  		} catch (ParseException e) {
  			e.printStackTrace();
  		}
  
  		add(txt);
  
  		pack();
  		setVisible(true);
  	}
  
  	/**
  	 * @param args
  	 */
  	public static void main(String[] args) {
  		new LimitedTextComponentExample();
  	}
  }

Gruß Tom
 
Zurück