蓝森林首页 | 返回主页 | 本站地图 | 站内搜索 | 联系信箱 |
 您目前的位置:首页 > 自由软件 > 技术交流 > 应用编程


    

蓝森林 http://www.lslnet.com 2006年6月6日 10:18


!!请教各位一个关于控制日期输入的问题!!

本人参照相关资料编写的一个控制日期输入的程序,但输入数字时抛出了异常。百思不得其解。求各位大侠 帮帮忙!!多谢先!!
import javax.swing.*;
import java.awt.*;
import javax.swing.event.*;
import java.awt.event.*;
import javax.swing.text.*;

class DateTextField extends JTextField
{public DateTextField()
    {super(new DateDocument(),"",10);     
     addKeyListener(new KeyAdapter()
                        {public void keyTyped(KeyEvent e)
                            {char ch=e.getKeyChar();                             
                             if((ch<'0'||ch>;'9'))
                                { e.consume();}                                                                     
                             }
                        });
    }
public static class DateDocument extends PlainDocument
    {private int characterLimit=10;     
     public DateDocument()
        {this(10);}
     public DateDocument(int limit)
        {super();
         characterLimit=limit;
        }
     public  void insertString(int offset,String str,AttributeSet attrib)throws BadLocationException
        {if(str.length()==1)
           {switch(offset)
              {case 0: case 1: case 2: case 3: case 5: case 6: case 8: case 9:
               try{remove(offset,1);}
               catch(BadLocationException ble1){System.out.println("控制日期输入(1)时出现错误!");}
               super.insertString(offset,str,attrib);
               break;
               case 4: case 7:
               if(!str.equals("-"))
                 {try{remove(offset,1);}
                  catch(BadLocationException ble2){System.out.println("控制日期输入(2)时出现错误!");}
                  super.insertString(offset,"-",attrib);
                  try{remove(offset+1,1);}
                  catch(BadLocationException ble3){System.out.println("控制日期输入(3)时出现错误!");}
                  super.insertString(offset+1,str,attrib);
                 }
               else
                 {try{remove(offset,1);}
                  catch(BadLocationException ble4){System.out.println("控制日期输入(4)时出现错误!");}
                  super.insertString(offset,str,attrib);
                        }
               break;
               default:throw new BadLocationException("df"+characterLimit+"char.",offset);
              }
           }
         else
           {for(int i=offset;i<offset+str.length();i++)
              insertString(i,""+str.charAt(i),attrib);
           }
        }
    }  
}

public class DateInputText extends JFrame
{JLabel jl;
DateTextField dtf;
DateInputText()
    {Container con=getContentPane();
     con.setLayout(new FlowLayout());
     con.setSize(200,150);
     jl=new JLabel("输入日期:");
     dtf=new DateTextField();
     con.add(jl);
     con.add(dtf);
     pack();
    }
public static void main(String args[])
    {DateInputText dit=new DateInputText();
     dit.setVisible(true);
    }
}

!!请教各位一个关于控制日期输入的问题!!

在调用super.insertString之前,Document里面还没有内容,这个时候你remove()的结果肯定会出错。

!!请教各位一个关于控制日期输入的问题!!

那请问要怎么改呢?
super.insertString(offset,str,attrib);语句又不能放到try{}catch(...){}语句的前面去.

!!请教各位一个关于控制日期输入的问题!!

求各位大侠指点指点啊!!



Copyright © 1999-2000 LSLNET.COM. All rights reserved. 蓝森林网站 版权所有。 E-mail : webmaster@lslnet.com