Здравствуйте, я использую jruby для написания приложения, и в настоящее время у меня проблемы с реализацией DocumentSizeFilter
. Сейчас я пытаюсь решить две проблемы.
- Вызов super.insertString (или super.repalce, который я пробовал ранее) продолжает запускать метод, не найденный в JRuby, хотя этот метод вызывается.
- Также почему при вставке вызывается замена, а не вставка?
P.S: Оба файла создаются с использованием
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