您好,我正在使用 jruby 编写应用程序,但目前在实现DocumentSizeFilter
. 目前我正在尝试解决两个问题。
- 调用 super.insertString (或我之前尝试过的 super.repalce )不断触发 JRuby 中未找到的方法,但该方法正在被调用。
- 另外为什么在插入时调用替换而不是插入?
PS:这两个文件都是使用
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
#test.rb
include Java
java_import java.awt.event.WindowEvent;
java_import javax.swing.JButton;
java_import javax.swing.border.Border;
java_import java.awt.Graphics;
java_import javax.swing.JFrame
java_import javax.swing.text.DocumentFilter;
java_import javax.swing.JTextArea;
require 'JavaUtilities/DocumentSizeFilter'
class JFrames < JFrame
def initialize
super "HI"
self.setSize 500,500
self.setDefaultCloseOperation JFrame::EXIT_ON_CLOSE
self.setLayout nil
add(area = (JTextArea.new ))
area.setBounds 30,30,100,40
area.getDocument.setDocumentFilter(JavaUtilities::DocumentSizeFilter.new 150)
self.setVisible true
end
end
JFrames.new