import javax.swing.*;
import javax.swing.text.*;
import java.awt.Toolkit;

class LimitTextField extends JTextField{
    int max;
    int max_int;
	
    public LimitTextField(int cols){
	super(cols);
	max = cols;
    }

    public LimitTextField(int cols, int int_limit){
	super(cols);
	max = cols;
	max_int = int_limit;
    }

    protected Document createDefaultModel() {
	return new CodeDocument();
    }
    
    //inner class
    protected class CodeDocument extends PlainDocument {
	int j = 0;
	char[] result = null;
	public void insertString(int offs, String str, AttributeSet a) throws BadLocationException {
	    char[] source = str.toCharArray();
	    if(offs < max) {
		result = new char[source.length];
		j = 0;
		for (int i = 0; i < result.length; i++) {
		    if(Character.isDigit(source[i]))
			result[j++] = source[i];
		    else{
			Toolkit.getDefaultToolkit().beep();
			return;
		    }	
		}
		
	    } else {
		Toolkit.getDefaultToolkit().beep();
		return;
	    }
	    String newString = new String(result, 0, j);
	    
	    if(max_int > 0){
		int docLen = super.getLength();
		String strDoc = super.getText(0, docLen) + newString;
		try{
		    if( (docLen > 0) && (Integer.valueOf(strDoc).intValue() > max_int) ){
			Toolkit.getDefaultToolkit().beep();
			return;
		    }	
		}
		catch(NumberFormatException e){e.printStackTrace();}
	    }

	    super.insertString(offs, newString, a);
         }
    }
}
    



syntax highlighted by Code2HTML, v. 0.9.1