1.首先可以判断输入长度,2.校验输入insert为数字,3.data整个字符串不等于"-"就看是否能转换为数字.4.最后判断极值.
public static final int TYPE_1=1;
private int type=1;
private int min=-32768;
private int max=32768;
public void insertString(int offs, String str, AttributeSet a)
throws BadLocationException {
int length=getLength();
byte[] insert=str.getBytes();
String text=getText(0, length);
switch(type){
case TYPE_1:
for(int i=0;i<insert.length;i++){
if(!(abyte>='0' && abyte<='9' || abyte=='-')){
return;
}
}
String data=text.concat(str);
int val=0;
if(!data.equals("-")){
try {
val=Integer.parseInt(data);
} catch (NumberFormatException e) {
return; }
}
val=Integer.parseInt(data);
if(data.startsWith("00")){
return;
}
if(val<min){
String s=String.valueOf(min);
remove(0, getLength());
super.insertString(0, s, a);
}else if(val>max){
String s=String.valueOf(max);
remove(0, getLength());
super.insertString(0, s, a);
}else{
super.insertString(offs, str, a);
}
break;
}