怎样限制JTextField只能输入字母和数字,谢谢!!! 添加一个DocumentListener在里面进行判断就可以了 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 这个问题已经有人问了无数遍了你只要搜一下答案就有一海片...BTW: DocumentListener 是不管用的import javax.swing.*;import javax.swing.text.AbstractDocument;import javax.swing.text.AttributeSet;import javax.swing.text.BadLocationException;import javax.swing.text.DocumentFilter;import java.util.regex.Pattern;import java.util.regex.Matcher;public class DocSizeFilter extends JFrame { public static final int MAX_SIZE = 16; private JTextField jtf; public DocSizeFilter() { AbstractDocument aDoc; jtf = new JTextField(); aDoc = (AbstractDocument) jtf.getDocument(); aDoc.setDocumentFilter(new SizeFilter(MAX_SIZE)); getContentPane().add(jtf); } public static void main(String[] args) { DocSizeFilter frame = new DocSizeFilter(); frame.setLocationRelativeTo(null); frame.setDefaultCloseOperation(EXIT_ON_CLOSE); frame.pack(); frame.setVisible(true); } private class SizeFilter extends DocumentFilter { int maxSize; int size; Pattern p = Pattern.compile("[0-9A-Za-z]"); Matcher m = p.matcher(""); public SizeFilter(int maxSize) { this.maxSize = maxSize; } public void insertString(FilterBypass fb, int offset, String string, AttributeSet attr) throws BadLocationException { size = fb.getDocument().getLength() + string.length(); m.reset(string); if (size < maxSize && m.matches()) { super.insertString(fb, offset, string, attr); } } public void replace(DocumentFilter.FilterBypass fb, int offset, int length,String text, AttributeSet attrs) throws BadLocationException { size = fb.getDocument().getLength() + text.length(); m.reset(text); if (size < maxSize && m.matches()) { super.insertString(fb, offset, text, attrs); } } }}需要自己实现一个 DocumentFilter, 实现过程见例题 http://community.csdn.net/Expert/topic/3335/3335175.xml?temp=7.658023E-02我在这个帖子上做过2次回复,正好能满足你的需要,请参照。 静态调用的问题 急急急 Groovy数据库操作事务相关 如何获取字符串多个位置的文本? 问高手一个功能怎么实现的,在线等! 如何将JAVA中的byte[]转成C中的UNSIGNED CHAR 在jbuilderX下面怎么使用jni 刚刚自学java遇到的2个小问题 Class.forName有什么作用? 请帮我看一下这个简单的程序我调试了好几次都不行 有没有专著于Java的博客网站? 大家谈一谈在网络中出现故障的可能以及基本的解决办法!
你只要搜一下答案就有一海片...
BTW: DocumentListener 是不管用的
import javax.swing.*;
import javax.swing.text.AbstractDocument;
import javax.swing.text.AttributeSet;
import javax.swing.text.BadLocationException;
import javax.swing.text.DocumentFilter;
import java.util.regex.Pattern;
import java.util.regex.Matcher;
public class DocSizeFilter extends JFrame {
public static final int MAX_SIZE = 16;
private JTextField jtf; public DocSizeFilter() {
AbstractDocument aDoc; jtf = new JTextField();
aDoc = (AbstractDocument) jtf.getDocument();
aDoc.setDocumentFilter(new SizeFilter(MAX_SIZE));
getContentPane().add(jtf);
} public static void main(String[] args) {
DocSizeFilter frame = new DocSizeFilter();
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(EXIT_ON_CLOSE);
frame.pack();
frame.setVisible(true);
} private class SizeFilter extends DocumentFilter {
int maxSize;
int size;
Pattern p = Pattern.compile("[0-9A-Za-z]");
Matcher m = p.matcher(""); public SizeFilter(int maxSize) {
this.maxSize = maxSize;
} public void insertString(FilterBypass fb, int offset, String string,
AttributeSet attr) throws BadLocationException {
size = fb.getDocument().getLength() + string.length();
m.reset(string);
if (size < maxSize && m.matches()) {
super.insertString(fb, offset, string, attr);
}
} public void replace(DocumentFilter.FilterBypass fb, int offset,
int length,String text, AttributeSet attrs)
throws BadLocationException {
size = fb.getDocument().getLength() + text.length();
m.reset(text);
if (size < maxSize && m.matches()) {
super.insertString(fb, offset, text, attrs);
}
}
}
}需要自己实现一个 DocumentFilter, 实现过程见例题
我在这个帖子上做过2次回复,正好能满足你的需要,请参照。