LimitedDocument extends PlainDocument
重载insertString()方法,加上int len = getLength();
if( len >= nLineLimit ) {
Toolkit.getDefaultToolkit().beep();
return;
}
其他部分可以不变。JTextField.setDocument(new LimitedDocument);
重载insertString()方法,加上int len = getLength();
if( len >= nLineLimit ) {
Toolkit.getDefaultToolkit().beep();
return;
}
其他部分可以不变。JTextField.setDocument(new LimitedDocument);
import javax.swing.text.AttributeSet;
import javax.swing.text.BadLocationException;
import javax.swing.text.PlainDocument;public class LimitedDocument extends PlainDocument { private int _maxLength = -1; private String _allowCharAsString = null;
public LimitedDocument(){
super();
} public LimitedDocument( int maxLength ){
super();
this._maxLength = maxLength;
} public void insertString( int offset, String str, AttributeSet attrSet)
throws BadLocationException{ if(str == null) {
return;
} if(_allowCharAsString != null && str.length() == 1) {
if(_allowCharAsString.indexOf(str) == -1){
return;
}
} char[] charVal = str.toCharArray();
String strOldValue = getText(0, getLength());
byte[] tmp = strOldValue.getBytes(); if(_maxLength != -1 && (tmp.length + charVal.length > _maxLength)){
return;
} super.insertString(offset, str, attrSet);
} public void setAllowChar(String str) {
_allowCharAsString = str;
}
}使用时: LimitedDocument ld = new LimitedDocument(8);//参数为能输入的最大长度
ld.setAllowChar("0123456789");//只能输入的字符 jTextField.setDocument(ld);//运用到文本框中
ch和by长度为什么会一样?
byte是8位的,char是16位的,为什么下面输出都是4呢? String st = "alin";
char[] ch = st.toCharArray();
byte[] by = st.getBytes();
//ch和by长度为什么会一样?
System.out.println("" + ch.length);
System.out.println("" + by.length);
但它好象没有真的做了啥处理 yuanmeng163(今天我有空)
我喜欢