JRuby和Swing DefaultTableModel(“没有参数匹配[...]的构造函数”)

时间:2010-02-10 13:39:46

标签: swing jruby

我使用来自JRuby的Swing,我正在尝试使用TableModel作为输入来设置JTable。
table_headers看起来像这样:[“bla”,“narf”,“poit”] table_data看起来像这样:[[“one”,“two”],[“test,test”],[“hello”,“world”]]

my_model = javax.swing.table.DefaultTableModel.new(table_data,table_headers) 结果

  

C:/jruby/lib/ruby/site_ruby/shared/builtin/javasupport/java.rb:51:在   `new':没有带参数的构造函数   匹配[class 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]   on object(NameError)

知道如何解决这个问题吗? 另外:是否有简单的方法来简单地创建表格并设置字段? (例如,某些内容: bla = SomeTable.new(5,5)
bla [2] [1] =“编辑”

P.S。正如你可能从错误消息中看到的那样,我必须使用windows

1 个答案:

答案 0 :(得分:1)

我之前已经看过这种类型的东西,它有多个构造函数具有相似数量的args(但是类型不同)。 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)

...等

  

另外:是否有一种“简单”的方法来简单地创建表格并设置字段?

您可以创建自己的包装,或者查看MonkeyBarsprofligacy