Java tutorial
import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JTextPane; import javax.swing.text.AbstractDocument; import javax.swing.text.AttributeSet; import javax.swing.text.BadLocationException; import javax.swing.text.Document; import javax.swing.text.DocumentFilter; public class Main extends JFrame { private JPanel panel = new JPanel(); private JTextPane tpane = new JTextPane(); private AbstractDocument abDoc; public Main() { setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); Document doc = tpane.getStyledDocument(); if (doc instanceof AbstractDocument) { abDoc = (AbstractDocument) doc; abDoc.setDocumentFilter(new DocumentSizeFilter(3)); } panel.add(tpane); add(panel); pack(); } public static void main(String... args) { new Main().setVisible(true); } } class DocumentSizeFilter extends DocumentFilter { int len; public DocumentSizeFilter(int max_Chars) { len = max_Chars; } public void insertString(FilterBypass fb, int offset, String str, AttributeSet a) throws BadLocationException { System.out.println("In DocumentSizeFilter's insertString method"); if ((fb.getDocument().getLength() + str.length()) <= len) { super.insertString(fb, offset, str, a); } } public void replace(FilterBypass fb, int offset, int length, String str, AttributeSet a) throws BadLocationException { System.out.println("In DocumentSizeFilter's replace method"); if ((fb.getDocument().getLength() + str.length() - length) <= len) { super.replace(fb, offset, length, str, a); } } }