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] на обект (NameError)

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. както може да видите от съобщението за грешка, трябва да използвам windows


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