代码之家  ›  专栏  ›  技术社区  ›  Marc Seeger

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

  •  0
  • Marc Seeger  · 技术社区  · 15 年前


    表格标题如下:[“bla”,“narf”,“poit”]
    表数据如下所示:[“1”,“2”],[“test,test”],[“hello”,“world”]]

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

    C:/jruby/lib/ruby/site\u ruby/shared/builtin/javasupport/java.rb:51:in `新建:没有带参数的构造函数 匹配[class 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\u 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、 正如你从错误信息中看到的,我必须使用windows

    1 回复  |  直到 15 年前
        1
  •  1
  •   Robert Brown    15 年前

    我以前在类中见过这种情况,这些类有多个具有相似arg数(但类型不同)的构造函数。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 profligacy