第1个回答 2009-02-18
这个问题比较难啊,得重写JTextField。建议你从头开始学swing。推荐书籍:《java swing》
先给你个我写例子你自己研究吧。我也不知道改怎么解释!
import javax.swing.*;
import javax.swing.text.*
public class ppoo extends JTextField{
public ppoo(int cols) {
super(cols);
}
public ppoo() {
super();
}
protected Document createDefaultModel() {
return new Limit();
}
static class Limit extends PlainDocument {
@Override
public void insertString(int offs, String str, AttributeSet a)
throws BadLocationException {
if (str == null) {
return;
}
System.out.println(offs);
if(offs>=4) { //这是关键,如果偏移量大于4则让传入的字符串为' '就可以了
str="";
}
super.insertString(offs, str, a);
}
}
}
class Main
{
public static void main(String[] args)
{
ppoo p=new ppoo();
JFrame j=new JFrame();
j.setLayout(FlowLayout());
p.setSize(150,100);
j.add(p);
j.setSize(200,200);
j.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
j.setVisible(true);
}
}
运行:
javac ppoo.java
java Main
楼下的方法不太好,容易引起BUG,而且效率会降低本回答被提问者采纳