こんにちは私はアプリを書くためにjrubyを使用していますが、現在、の実装に問題がありDocumentSizeFilter
ます。現在、私が理解しようとしている2つの問題があります。
- 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