Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/386.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.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.insertString_Java_Ruby_Jruby_Documentfilter - Fatal编程技术网

Java 正在编写文档筛选器-找不到super.insertString

Java 正在编写文档筛选器-找不到super.insertString,java,ruby,jruby,documentfilter,Java,Ruby,Jruby,Documentfilter,您好,我正在使用jruby编写应用程序,目前在实现DocumentSizeFilter时遇到问题。目前我正试图解决两个问题。 调用super.insertString(或我之前尝试过的super.repalce)会不断触发JRuby中未找到的方法,但该方法正在被调用。 为什么在插入时调用replace而不是insert? 注:两个文件都是使用 jruby 1.7.1 (1.9.3p327) 2012-12-03 30a153b on OpenJDK 64-Bit Server VM 1.7.0_

您好,我正在使用jruby编写应用程序,目前在实现
DocumentSizeFilter
时遇到问题。目前我正试图解决两个问题。

  • 调用super.insertString(或我之前尝试过的super.repalce)会不断触发JRuby中未找到的方法,但该方法正在被调用。
  • 为什么在插入时调用replace而不是insert?
  • 注:两个文件都是使用

    jruby 1.7.1 (1.9.3p327) 2012-12-03 30a153b on OpenJDK 64-Bit Server VM 1.7.0_09-b30 [linux-amd64]
    
    以下是我当前使用的测试文件:

    #JavaUtilities\DocumentSizeFilter.rb
    module JavaUtilities
        class DocumentSizeFilter < DocumentFilter
            def initialize max_char
                super()
                @MAX_CHAR = max_char
            end
            def insertString(fb, offset, string, attrs) 
                puts 'doing insert'
                super.insertString(fb, offset, string, attrs)
            end
            def remove(fb, offset, length) 
                puts 'doing remove'
            end
    
            def replace(fb,  offset, length, text, attrs) 
                puts 'doing replace'
                super.insertString(fb, offset, text, attrs)
            end
        end
    end
    
    #JavaUtilities\DocumentSizeFilter.rb
    模块JavaUtilities
    类DocumentSizeFilter

    #test.rb
    包括Java
    java_导入java.awt.event.WindowEvent;
    java_导入javax.swing.JButton;
    java_导入javax.swing.border.border;
    java_导入java.awt.Graphics;
    java_导入javax.swing.JFrame
    java_导入javax.swing.text.DocumentFilter;
    java_导入javax.swing.JTextArea;
    需要“JavaUtilities/DocumentSizeFilter”
    类JFrame
    你的困惑在于Ruby中的
    super
    是什么:它不是一个引用,而是一个关键字

    您只需调用
    super
    ,例如:

    def replace(fb,  offset, length, text, attrs) 
      puts 'doing replace'
      super
    end
    
    super
    如果没有参数,则使用当前方法的参数调用超类方法。您可以使用args调用,例如,
    super foo、bar
    ,也可以不使用args(明确要求使用paren),例如,
    super()

    def replace(fb,  offset, length, text, attrs) 
      puts 'doing replace'
      super
    end