here's a simple demo using PlainDocument (might suit your needs)
import java.awt.*;
import javax.swing.*;
import javax.swing.text.*;
class Testing extends JFrame
{
public Testing()
{
setLocation(400,300);
setDefaultCloseOperation(EXIT_ON_CLOSE);
JTextArea ta = new JTextArea(new CharacterLimiter(20),"",5,10);
ta.setLineWrap(true);
JPanel p = new JPanel();
p.add(ta);
getContentPane().add(p);
pack();
}
public static void main(String[] args){new Testing().setVisible(true);}
}
class CharacterLimiter extends PlainDocument
{
int maxChar;
public CharacterLimiter(int len){maxChar = len;}
public void insertString(int offs, String str, AttributeSet a) throws BadLocationException
{
if (this.getLength() + str.length() > maxChar)
{
java.awt.Toolkit.getDefaultToolkit().beep();
return;
}
super.insertString(offs, str, a);
}
}