# JTextField und JOptionPane - Zeicheneingabe beschränken



## SebastianK (3. Nov 2007)

hallo,

ich habe ein JTextField und ein JOptionPane.showInputDialog implementiert.

nun möchte ich bei beiden eine begrenzung setzen, wieviel zeichen der benutzer eingeben kann.

ich hab natürlich in die API geschaut, aber keine methode dafür gefunden.


----------



## André Uhres (4. Nov 2007)

```
...
        name = new JTextField();
        name.setDocument(new Begrenzen());
        Object[] message = {"Enter Name\n", name};
        int resp = JOptionPane.showConfirmDialog(null, message, "Test",
                JOptionPane.OK_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE);
        if (resp == JOptionPane.OK_OPTION) {
            String id = name.getText();
            System.out.println(id);
        }
...
class Begrenzen extends PlainDocument {

    @Override
    public void insertString(int offs, String str, AttributeSet a) throws BadLocationException {
        if (getLength() + str.length() > 5) {
            Toolkit.getDefaultToolkit().beep();
        } else {
            super.insertString(offs, str, a);
        }
    }
}
```


----------



## SebastianK (5. Nov 2007)

danke für den quellcode!

habs jetzt erstmal beim JTextField ausprobiert und klappt.
aber ich versteh leider nicht so recht warum.

die arbeitsweise der methode insertString erschließt sich mir nicht so recht.
könntest du das vielleicht etwas erläutern?

thx!


----------



## André Uhres (5. Nov 2007)

Das "Document" vom JTextField ist eigentlich sein Model:
wenn man Zeichen ins JTextField einfügt, dann ruft Swing die Methode
"insertString" auf, um die selben Zeichen ("String str") auch im Model oder Document einzufügen.
"int offs" ist die Position, wo der "String str" hinkommt.


----------

