如何限制我在JTextField中输入的长度?

3
    username = new JTextField("");
    username.setBounds(330, 550, 230, 30);
    username.addActionListener(this);
    username.requestFocus(); // sets focus on JTextField
    this.add(username);

我想限制在此JTextField中输入的输入量。欢迎所有解决方案,提前感谢您。 - wannabeprogrammer
请参阅Swing教程中的实现文档过滤器以获取首选的工作解决方案。 - camickr
1
使用自定义文档是一种旧的方法。自JDK1.4以来,首选方法是使用DocumentFilter。过滤器可以用于任何扩展AbstractDocument的文档,这可能使其更具可重用性。 - camickr
1个回答

7
JTextField username = new JTextField("") ;
final int limit = 10;
username .setDocument(new PlainDocument(){
    @Override
    public void insertString(int offs, String str, AttributeSet a)
            throws BadLocationException {
        if(getLength() + str.length() <= limit)
            super.insertString(offs, str, a);
    }
});

1
@thynoob 我正在创建一个匿名类,它继承了PlainDocument类,并且 @Override 是一个注解,用于指定我正在重写基类的方法。请参阅此页面了解注解的一般情况和 @Override 注解。 - Bala R
好的,谢谢帮忙!^.^ 我需要在源代码中使用 @Override 才能使它工作吗?并且在复制粘贴您建议的内容后,我发现它没有起作用...我需要添加其他东西吗? - wannabeprogrammer
@Bala R 哦..原来我忘记导入某些东西了... :P 非常感谢!!! 它起作用了!!! - wannabeprogrammer
自JDK1.4以来,DocumentFilter是首选方法。 - camickr

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接