1. NumberOnlyDocument.javapackage org.jr.swing.text;import javax.swing.text.*;
import java.awt.*;public class NumberOnlyDocument extends PlainDocument {
  private boolean haveDot=false;
  private int length=0;        public void insertString(int offs, String str, AttributeSet a)
           throws BadLocationException {           if (str == null) {
          return;
           }
           char[] number = str.toCharArray();
           for (int i = 0; i < number.length; i++) {
         if (offs==0)
         {
           if (!(number[i]>='0'&&number[i]<='9'||number[i]=='.'||number[i]=='-'||number[i]=='+'))
           {
             if (offs==length-1)
             {
                 remove(offs+i,1);
             }
             else
             {
               return;
             }           }
           else
           {
             length++;
           }
         }
         else {
           if (!haveDot)
           {
            if (!(number[i]>='0'&&number[i]<='9'||number[i]=='.'))
             {
             if (offs==length-1)
             {
                 remove(offs+i,1);
             }
             else
             {
               return;
             }
             }
             else
             {
               if (number[i]=='.')
               {
                 haveDot=true;
               }
               length++;
             }
           }
           else {
             if (!(number[i]>='0'&&number[i]<='9'))
             {
             if (offs==length-1)
             {
                 remove(offs+i,1);
             }
             else
             {
               Toolkit.getDefaultToolkit().beep();
               return;
             }
             }
             else
             {
               length++;
             }
           }
         }
           }
          super.insertString(offs, new String(number), a);
       }
}2.JNumberTextField.javapackage org.jr.swing;
import javax.swing.*;
import javax.swing.text.*;
import java.io.*;
import java.awt.*;
import org.jr.swing.text.NumberOnlyDocument;public class  JNumberTextField extends JTextField{
private int MAX,MIN;
private boolean isLimit=false;
// private boolean isFirst=true;
public JNumberTextField(int cols)  {
super(cols);
}
public JNumberTextField(int cols,int max,int min) {
super(cols);
if (max>min) {
MAX=max;
MIN=min;
isLimit=true;
}
}
public void setRange(int max,int min) {
if (max>min) {
MAX=max;
MIN=min;
isLimit=true;
}
}
    protected Document createDefaultModel() {
       return new NumberOnlyDocument();
    }}