Reputation: 2883
How to limit the number of characters entered in a JTextField
using DocumentListener
?
Suppose I want to enter 30 characters max. After that no characters can be entered into it. I use the following code:
public class TextBox extends JTextField{
public TextBox()
{
super();
init();
}
private void init()
{
TextBoxListener textListener = new TextBoxListener();
getDocument().addDocumentListener(textListener);
}
private class TextBoxListener implements DocumentListener
{
public TextBoxListener()
{
// TODO Auto-generated constructor stub
}
@Override
public void insertUpdate(DocumentEvent e)
{
//TODO
}
@Override
public void removeUpdate(DocumentEvent e)
{
//TODO
}
@Override
public void changedUpdate(DocumentEvent e)
{
//TODO
}
}
}
Upvotes: 2
Views: 2453
Reputation: 347194
You'll want to use a DocumentFilter
for this purpose. As the applies, it filters documents.
Something like...
public class SizeFilter extends DocumentFilter {
private int maxCharacters;
public SizeFilter(int maxChars) {
maxCharacters = maxChars;
}
public void insertString(FilterBypass fb, int offs, String str, AttributeSet a)
throws BadLocationException {
if ((fb.getDocument().getLength() + str.length()) <= maxCharacters)
super.insertString(fb, offs, str, a);
else
Toolkit.getDefaultToolkit().beep();
}
public void replace(FilterBypass fb, int offs, int length, String str, AttributeSet a)
throws BadLocationException {
if ((fb.getDocument().getLength() + str.length()
- length) <= maxCharacters)
super.replace(fb, offs, length, str, a);
else
Toolkit.getDefaultToolkit().beep();
}
}
Create to MDP's Weblog
Upvotes: 2