干脆用两个JTextField吧,一个用来写整数,一个用来写小数。

解决方案 »

  1.   

    import java.awt.*;
    import java.applet.*;
    import javax.swing.*;
    import javax.swing.text.*;
    import java.awt.event.*;
    import formatstring;public class MyApp extends JApplet
    {
       final JButton b1;
       JTextField jtf=new JTextField(formatstring.f_string);
       JPanel jp1;
       
       public MyApp()
       {
          Container con=getContentPane(); 
          JRootPane rootpane=getRootPane();
          jtf.setDocument(new formatstring(jtf));
          b1=new JButton("OK");
          jp1=new JPanel();
          rootpane.setDefaultButton(b1);
          con.setLayout(new FlowLayout());
          jp1.add(jtf);
          
          con.add("Center",jp1);
          con.add("South",b1);
            
         b1.addMouseListener(new java.awt.event.MouseAdapter() 
         {
            public void mouseClicked(MouseEvent e) 
            {
       //       dlg_show(b1.getText());
            }
         });
       
       b1.addActionListener(new java.awt.event.ActionListener() 
       {
          public void actionPerformed(ActionEvent e) 
          {
         //    dlg_show(b1.getText());
          }
        });
       
       }   
    } import javax.swing.*;
    import javax.swing.text.*;
    import java.awt.*;
    import java.awt.event.*;
    class formatstring extends PlainDocument
    {
       public static String f_string="000.000.000.000";
       private static int s1=3,s2=7,s3=11;
       private JTextComponent jtc;
       private int newoffset;
       int i=-1;
       dlg dlg1;
       
       public formatstring(JTextComponent jtf)
       {
         jtc=jtf;
         try
         {
            insertString(0,f_string,null);
         }
         catch(Exception e)
         {
         
         }  
       }
      
       public void insertString(int offset,String s,AttributeSet aset) throws BadLocationException
       {
         String asd;
         int i;
         
         if(s.equals(f_string))
         {
            super.insertString(offset,s,aset);
         }
         else
         {
           try
           { 
             i=offset;
             if ((i==0)||(i==3)||(i==7)||(i==11) )
             {
                if (Integer.parseInt(s)>2)
                    return;
             }       
             else
             {
               if (Integer.parseInt(s)>5)
                    return;
             }
             Integer aa=new Integer(i);
        //     dlg1=new dlg("i",1,aa.toString());
           }
           catch(Exception ex)
           {
             return;
           }
           newoffset=offset;
           if(ats(offset))
           {
              newoffset++;
              jtc.setCaretPosition(newoffset);
              
           }
           super.remove(newoffset,1);
           super.insertString(newoffset,s,aset);
         }  
        } 
         public void remove(int offset,int length) throws BadLocationException
         {
           if (ats(offset))
              jtc.setCaretPosition(offset-1);
           else  
              jtc.setCaretPosition(offset); 
              
         } 
            
         private boolean ats(int offset)   
         {
           return offset==s1||offset==s2||offset==s3;
          
         }
         
          }   
      

  2.   

    what is that "dlg"?????
      

  3.   

    //    dlg1=new dlg("i",1,aa.toString());
    这句是被注释的,没用的
      

  4.   

    两个JTextField吧,一个用来写整数,一个用来写小数。 
      

  5.   

    to hexiaofeng and vdragon :
    两个JTextField?太玩笑了吧 ?