JRuby и Swing DefaultTableModel (без конструктора с соответствующими аргументами [])

Я использую Swing из JRuby и пытаюсь настроить JTable с TableModel в качестве входных данных.
table_headers выглядит примерно так: ["bla", "narf", "poit"]
table_data выглядит примерно так : [["один", "два"], ["тест, тест"], ["привет", "мир"]]

my_model = javax.swing.table.DefaultTableModel.new(table_data,table_headers) приводит к

C:/jruby/lib/ruby/site_ruby/shared/builtin/javasupport/java.rb:51:in `new': нет конструктора с аргументами, соответствующими [классу org.jruby.RubyArray, классу org.jruby.RubyArray] для объекта (ИмяОшибка)

my_model = javax.swing.table.DefaultTableModel.new(table_data.to_java,table_headers.to_java) приводит к

C:/jruby/lib/ruby/site_ruby/shared/builtin/javasupport/java.rb:51: нет конструктора с аргументами, соответствующими [классу org.jruby.java.proxies.ArrayJavaProxy, классу org.jruby.java.proxies.ArrayJavaProxy ] на объекте (NameError)

Есть идеи, как это решить?
Также: нет ли «простого» способа просто создать таблицу и установить поля?
(например, что-то вроде:
bla = SomeTable.new (5,5)
bla[2][1] = "отредактировано"
)

p.s. как вы можете видеть из сообщения об ошибке, я должен использовать окна


person Marc Seeger    schedule 10.02.2010    source источник


Ответы (1)


Я видел подобное раньше с классами, которые имеют несколько конструкторов с одинаковым количеством аргументов (но разного типа). У JRuby иногда возникают проблемы с выбором конструктора, который вы хотите вызвать (то же самое касается перегруженных методов). Легко понять, почему в данном случае: некоторые конструкторы берут Object[].

К счастью, вы можете добавить свои столбцы и данные после создания экземпляра:

m = javax.swing.table.DefaultTableModel.new
m.add_column("id")
m.add_column("name")
m.add_row(["1", "jimmy"].to_java)
m.add_row(["2", "robert"].to_java)

...и т.д

Также: нет ли «простого» способа просто создать таблицу и установить поля?

Вы можете создать свою собственную оболочку или взглянуть на MonkeyBars или расточительство

person Robert Brown    schedule 10.02.2010
comment
есть ли способ фактически добавить столбец данных. Кажется, я не могу добавить более 1 элемента данных в команду add_column :( - person Marc Seeger; 11.02.2010
comment
Похоже, что строки первого порядка, столбцы второго порядка, что для меня имеет смысл (иначе это запутало бы). Что ты пытаешься сделать? - person Robert Brown; 12.02.2010