【发布时间】:2011-05-30 04:23:18
【问题描述】:
我必须限制 JTextField 中的字符数。我使用以下代码来执行此操作,但问题是我使用虚拟键盘将数据提供给 JTextField。所以偏移量一直设置为0。当我输入超过指定数量的字符时,它会重置该字段并从头开始执行。例如,如果我的限制是 3 个字符并且我正在输入 xyz0,我受限的文本框会读取到 z 的字符,然后清除该字段并再次重新启动。所以我在现场留下了0。代码如下。
public class JTextFieldLimit extends PlainDocument {
private int limit;
public JTextFieldLimit(int limit) {
super();
this.limit = limit;
}
@Override
public void insertString( int offset, String str, AttributeSet attr ) throws BadLocationException {
if (str == null) return;
System.out.println("from document helper getLength():"+getLength());
System.out.println("from document helper str.length():"+str.length());
System.out.println("from document helper str:"+str);
System.out.println("from document helper attr:"+attr);
System.out.println("from document helper offset:"+offset);
if ((getLength() + str.length()) <= limit) {
super.insertString(offset, str, attr);
}
}
}
【问题讨论】:
标签: java swing jtextfield