import javax.swing.*;
import javax.swing.text.*;

/**
 * This example appears in the API for JTextField
 * (there it converts to upper-case, here to lowercase)
 * no upper-case characters appear in the LowerTextField
 *
 * See also Core Java vol. I
 */

public class LowerTextField extends JTextField
{
    public LowerTextField()
    {
	this(0);
    }

    public LowerTextField(int size)
    {
	super(size);
    }
    
    protected Document createDefaultModel() {
	return new UpperCaseDocument();
    }

    static class UpperCaseDocument extends PlainDocument {

        public void insertString(int offs, String str, AttributeSet a) 
	    throws BadLocationException {

	    if (str == null) {
		return;
	    }
	    char[] lower = str.toCharArray();
	    for (int i = 0; i < lower.length; i++) {
		lower[i] = Character.toLowerCase(lower[i]);
	    }
	    System.out.println("inserted " + str);
	    super.insertString(offs, new String(lower), a);
	}
    }    
}
