我有一个基本类,该类允许我限制在JTextField(或与此相关的任何字段)中输入的字符数,但是我想知道是否有一种方法可以将该类转换为函数,以便可以将该函数放入我的“实用程序”类,以及其他帮助函数。如果我可以将限制作为参数提供给函数,那将是理想的。

目前,它的名称如下:

textfield.setDocument(new InputLimit());


我希望能够这样称呼它:

textfield.setDocument(Utilities.setInputLimit(10));


我的课如下:

public class InputLimit extends PlainDocument {

    private final int charLimit = 10;

    InputLimit() {
        super();
    }

    public void insertString(int offset, String str,
            AttributeSet attr) throws BadLocationException {
        if (str == null) {
            return;
        }

        if ((getLength() + str.length()) <= charLimit) {
            super.insertString(offset, str, attr);
        }
    }
}

最佳答案

您可以将charLimit作为构造函数参数传递为

textfield.setDocument(new InputLimit(10));


只需在类中添加以下构造函数

public class InputLimit extends PlainDocument {

    private final int charLimit = 10;

    // Keep this if you want a no-arg constructor too
    InputLimit() { super(); }

    // compiler will auto add the super() call for you
    public InputLimit(int limit) { this.charLimit = limit; }

    // ...
}

10-07 20:14