Java 将输入限制类更改为函数
我有一个基本类,它允许我限制在JTextField(或任何相关字段)中输入的字符数,但我想知道是否有办法将该类转换为函数,这样我就可以将该函数与其他助手函数一起放入我的“Utilities”类中。如果我能把极限作为函数的一个参数,那就太理想了 目前称之为:Java 将输入限制类更改为函数,java,swing,jtextfield,user-input,Java,Swing,Jtextfield,User Input,我有一个基本类,它允许我限制在JTextField(或任何相关字段)中输入的字符数,但我想知道是否有办法将该类转换为函数,这样我就可以将该函数与其他助手函数一起放入我的“Utilities”类中。如果我能把极限作为函数的一个参数,那就太理想了 目前称之为: textfield.setDocument(new InputLimit()); textfield.setDocument(Utilities.setInputLimit(10)); 我想这样称呼它: textfield.setDocu
textfield.setDocument(new InputLimit());
textfield.setDocument(Utilities.setInputLimit(10));
我想这样称呼它:
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);
}
}
}
公共类InputLimit扩展了明文{
私人最终int字符限制=10;
输入限制(){
超级();
}
public void insertString(int offset,String str,
AttributeSet attr)引发BadLocationException{
如果(str==null){
返回;
}
如果((getLength()+str.length())您可以将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; }
// ...
}
更改:
private final int charLimit = 10;
InputLimit() { super(); }
致:
要创建一个:
textfield.setDocument(new InputLimit(15));
那么,您想创建一个静态方法?使用什么签名?使用DocumentFilter而不是PlainDocument,您演示的方法已经过时超过10年了。是的,我想创建一个静态方法,但不确定您所说的签名是什么意思。@MadProgrammer,我需要实现insertString和replace meth吗ods的DocumentFilter,我是否需要首先将JTextfield作为抽象文档进行装箱,如图所示?检查这只对参数有帮助(我很感激),但仍然不能帮助我将代码变成函数,而不是类。要创建一个:textfield.setDocument(新的InputLimit(15));
。这不需要方法。