import javax.swing.*;
import javax.swing.text.*;
import javax.swing.event.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import java.text.*;public class TestJFormattedTextField2
{
   JFrame mainWin=new JFrame("测试格式化文本框");
   JPanel mainPanel=new JPanel();
   JPanel buttonPanel=new JPanel();
   JButton okButton=new JButton("显示文本框值");
   public void init()
   {
mainPanel.setLayout(new GirdLayout(1 , 3));
mainWin.add(mainPanel);
buttonPanel.add(okButton);
mainWin.add(buttonPanel , BorderLayout.SOUTH);
JFormattedTextField intField0=new JFormattedTextField(
   new InternationalFormatter(NumberFormat.getIntegerInstance())
   {
//重写DocumentFilter的方法,返回定制的过滤器
protected DocumentFilter getDocumentFilter()
{
   return new NumberFilter();

   });
intField0.setValue(100);
addRow("只接受数字的文本框:" , intField0);
JFormattedTextField intField1=new JFormattedTextField(
   NumberFormat.getIntegerInstance());
intField1.setValue(1000);
intField1.setVerifier(new NumberVerifier());
addRow("带输入校验器的文本框:" , intField1);
IPAddressFormatter ipFormat=new IPAddressFormatter();
JFormattedTextField ipField=new JFormattedTextField(ipFormat);
ipFormat.setValue(new byte[]{(byte)192 , (byte)168 , 0 , 1});
addRow("ip地址格式器:" , ipField);
mainWin.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
mainWin.pack();
mainWin.setVisible(true);
   }
   //定制自己的过滤器
   class NumberFilter extends DocumentFilter
   {
//重写DocumentFilter的三个中的两个方法
public void insertString(FilterBypass filter , 
   int offset, String string, AttributeSet attr)throws BadLocationException
  {
   StringBuilder builder=new Stringbuilder(string);
   intFilter(builder);
   super.insertString(filter, offset, string, attr);
} public void replace(FilterBypass filter , 
   int offset, String string, AttributeSet attr)throws BadLocationException
  {
  if(string != null)
  {
   StringBuilder builder=new Stringbuilder(string);
   intFilter(builder);
  }
   super.replace(filter, offset, string, attr);
}
//过滤字符,把非0-9的字符删除
public void intFilter(StringBuilder builder)
{
   for(int i=builder.length -1; i >= 0; i--)
   {
int cp=builder.codePointAt(i);
if(cp < '0' || cp > '9')
{
   builder.deleteCharAt(i);
}
   {
}
   }   //定制输入校验器
   class NumberVerifier extends InputVerify
   {
//当组件失去焦点时触发
public boolean verify(JComment input)
{
   JFormatterTextField field=(JFormatterTextField)input;
   return field.isEditValid();
}
   }   //定制ip地址formatter
   class IPAddressFormatter extends DefaultFormatter
   {
public Object stringToValue(String string)throws ParseException
{
   String[] nums=string.split(".");
   if(nums.length != 4)
   {
throw new ParseException("IP地址必须是4个整数", 0);
   }
   byte[] a=new byte[4];
   for(int i=0; i < nums.length; i++)
   {
      try
      {
int b=Integer.valueOf(nums[i]);
      }
      catch(NumberFormatException e)
      {
throw new ParseException("IP地址必须是整数" , 0);
      }
      if(b < 0 || b > 255)
      {
throw new ParseException("IP地址必须是0-255之间" , 0);
      }
a[i]=(byte)b;
   }
    return a;
}

public String valueToString(Object value)throws ParseException
{
   if(!(value instanceof byte[]))
   {
throw new ParseException("IP地址必须是byte数组" , 0);
   }
   byte[] b=(byte[])value;
   if(b.length != 4)
   {
throw new ParseException("IP地址必须是4个整数" , 0);
   }
   StringBuilder builder=new StringBuilder();
   for(int i=0; i < b.length; i++)
   {
if(i > 0)   builder.append('.');
if(b[i] > 255 || b[i] < 0)
{
   throw new ParseException("IP地址必须是0-255之间" , 0);
}
else
{
   int a=b[i];
   builder.append(Stirng.valueOf(a));
}
   }
}
   }
   public void addRow(String label , final JFormattedTextField field)
   {
final JLabel text=new JLabel();
mainPanel.add(new JLabel(label));
mainPanel.add(field);
mainPanel.add(text);
//为按钮添加监听器
okButton.addActionListener(new ActionListener()
{
   public void actionPerformed(ActionEvent e)
   {
Object object=field.getValue();
if(object.getClass().isArray())
{
 for(int i=0 ; i < object.length ; i++)
 {
   String str=field.valueToString(object[i]);
   text.setText(str);
 }
}
else
{
   text.setText(object.toString());
}
   }
});
   }
   public static void main(String[] args)
{
  new TestJFormattedTextField2().init();

}问题如标题所示,main方法也是如此
求帮忙,谢谢!