|
蓝森林 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(...){}语句的前面去. |
!!请教各位一个关于控制日期输入的问题!!
求各位大侠指点指点啊!! |
| |