Java Swing 限制JTextField输入类型

在Java Swing中有时候想去限制JTextField输入框的一些内容时,很多时候会用正则表达式去判断条件,这也确实是比较通用和正规的一种方式,但是有时候为了方便我们也会选择其他的一些方式,下面就是小编给大家整理的两种新的方式,感兴趣的小伙伴们可以去试试哟!

限制输入数字

1
2
3
4
5
6
7
8
9
10
11
12
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);
}
}

提示:调用方法textfield.setDocument(new IntegerDocument());。

限制输入数字和长度

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
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位而且是只能是数字!!!

通过上面的两种方法就可以直接限制Swing中的输入框的问题,不用去正则表达式来判断啦!

0%