直接上例子
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();
}
}