Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/351.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java super.replace()做什么?_Java - Fatal编程技术网

Java super.replace()做什么?

Java super.replace()做什么?,java,Java,我试图理解Java中的文档过滤器。我想知道为什么我们调用super.replace方法以及它的作用是什么? 我正在研究和应用一个代码,用于在Jtextfield中限制为仅数字和有限字符 public void replace(FilterBypass fb, int offset, int length, String text, AttributeSet attrs) throws BadLocationException { int currentLength

我试图理解Java中的文档过滤器。我想知道为什么我们调用super.replace方法以及它的作用是什么? 我正在研究和应用一个代码,用于在Jtextfield中限制为仅数字和有限字符

public void replace(FilterBypass fb, int offset, int length, String text, AttributeSet attrs) throws BadLocationException {
                int currentLength = fb.getDocument().getLength();
                if(isDigit(text)){
                int overLimit = (currentLength + text.length()) - limit - length;
                if (overLimit > 0) {
                    text = text.substring(0, text.length() - overLimit);
                }
                if (text.length() > 0) {
                    super.replace(fb, offset, length, text, attrs); 
                }
            }else{
                        Toolkit.getDefaultToolkit().beep();
                   //super.replace(fb, offset, length, text, attrs);     
                System.out.println("BEEP");
                }
isDigit()具有检查字符的逻辑。isDigit()

返回true时super.replace做什么?
此外,我无法通过setText()清除使用documentfilter的textfield

的默认实现直接调用FilterBypass:

public void replace(FilterBypass fb, int offset, int length, String text,
                    AttributeSet attrs) throws BadLocationException {
    fb.replace(offset, length, text, attrs);
}
这意味着文本范围替换操作将在不进行任何进一步筛选的情况下继续进行

资料来源:

这取决于继承的
replace
实现的功能。您能告诉我们一些上下文吗?哪个类是replace?它将从超类调用replace方法。Rest all依赖于超类的replace方法功能。@jonrsharpe我在学习只允许数字if(isDigit(text)){super.replace(fb,offset,length,text,attributes);}else{Toolkit.getDefaultToolkit().beep()的代码;System.out.println(“BEEP”);}{Isdigit包含要检查的逻辑}请回答您的问题,而不是添加注释。代码在注释中不可读。评论可能不会按发布顺序出现,而是按投票顺序出现。这意味着只要我调用super.replace,变异就会停止,不再进行过滤。请参考我的代码并让我理解。我将感谢您。您的过滤器似乎拒绝所有文本不是数字的“替换”编辑。如果替换为空字符串会发生什么情况?是的,因为我不希望alpha和字符不超过15位,因为我的文本字段是account num。我遇到了空字符串的问题。例如。提交后,我通过setText清除所有文本字段,除了我过滤的acc和amt字段外,它在任何地方都有效