直接上例子
package com.test;
import javax.swing.text.AttributeSet;
import javax.swing.text.PlainDocument;
/**
*
* @author Administrator 限制输入条件(长度,类型)
*/
public class InputLimited extends PlainDocument {
private int limitedLength;// 长度
private boolean flag;
public InputLimited(int limitedLength, boolean flag) {
this.limitedLength = limitedLength;
this.flag = flag;
}
/**
* 重写insertString()方法
*/
public void insertString(int offs, String str, AttributeSet attr) {
try {
if (str == null) {// 输入为空,直接返回
return;
}
if ((this.getLength() + str.length()) <= limitedLength) {// 原有的字符串和新输入的字符串长度小于限制长度
char[] charArray = str.toCharArray();// 将新输入字符串转换为字节数组
int length = 0;
for (int i = 0; i < charArray.length; i++) {
if (flag = true) {// 截取出数字
if (charArray[i] >= '0' && charArray[i] <= '9') {// 筛选出数字
charArray[length++] = charArray[i];
}
} else {// 新输入全为数字
charArray[length++] = charArray[i];
}
}
super.insertString(offs, new String(charArray, 0, length), attr);// 插入满足条件的字符串
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
再来个测试主方法
package com.test;
/**
* @author Administrator
* 测试输入 主界面
*/
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class Test1 extends JFrame {
JTextField jt = new JTextField(15);
public Test1() {
JPanel p = new JPanel();
p.add(jt);
add(p);
setSize(300, 300);
setVisible(true);
InputLimited nl = new InputLimited(11, true);// 长度为11,且只能输入数字
jt.setDocument(nl);
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
(e.getWindow()).dispose();
System.exit(0);
}
});
}
public static void main(String[] args) {
new Test1();
}
}