Limiting Length of Input in JTextField is not working
You current code is not setting the maximum length, rather it is defining the number of visible columns.
To restrict the maximum length of the data, you can set a custom Document
for the text field that does not permit additions that break the maximum length restriction:
public final class LengthRestrictedDocument extends PlainDocument {
private final int limit;
public LengthRestrictedDocument(int limit) {
this.limit = limit;
}
@Override
public void insertString(int offs, String str, AttributeSet a)
throws BadLocationException {
if (str == null)
return;
if ((getLength() + str.length()) <= limit) {
super.insertString(offs, str, a);
}
}
}
Then set your text field to use this document:
text2.setDocument(new LengthRestrictedDocument(8));
The constructor
new JTextField("Enter text here",8);
sets the number of visible columns to 8 but doesn't restrict you from entering more.
You could use a DocumentFilter to restrict the input length.