原文:http://blog.sina.com.cn/s/blog_46fb85920100mi1m.html
貌似有很多方法,先记了再说...
1.限制输入数字
用法 textfield.setDocument(new IntegerDocument());
class IntegerDocument extends PlainDocument
{
public void insertString(int offset, String s, AttributeSet attributeSet) throws BadLocationException
{
try
{
Integer.parseInt(s);
}
catch(Exception ex)
{
Toolkit.getDefaultToolkit().beep();
return;
}
super.insertString(offset, s, attributeSet);
}
}
2.限制输入数字和长度
public class NumberLenghtLimitedDmt extends PlainDocument {
private int limit; public NumberLenghtLimitedDmt(int limit) { super(); this.limit = limit; } public void insertString (int offset, String str, AttributeSet attr) throws BadLocationException { if (str == null){ return; } if ((getLength() + str.length()) <= limit) { char[] upper = str.toCharArray(); int length=0; for (int i = 0; i < upper.length; i++) { if (upper[i]>='0'&&upper[i]<='9'){ upper[length++] = upper[i]; } } super.insertString(offset, new String(upper,0,length), attr); } }}用法:
JTextField text=new JTextField();
text.setDocument(new NumberLenghtLimitedDmt(7));
那么这个文本框只能输入7位而且是只能是数字!!!
3.添加KeyListener
public void keyTyped(KeyEvent e) { if ((e.getKeyChar() >= e.VK_0 && e.getKeyChar() <= e.VK_9) || e.getKeyChar() == e.VK_ENTER || e.getKeyChar() == e.VK_TAB || e.getKeyChar() == e.VK_BACK_SPACE || e.getKeyChar() == e.VK_DELETE || e.getKeyChar() == e.VK_LEFT || e.getKeyChar() == e.VK_RIGHT || e.getKeyChar() == e.VK_ESCAPE) return; e.consume(); }
4.使用JFormattedTextField
5.貌似还能用正则表达式 - - 还不会玩,等学了补充下