2010-02-10 45 views
0

我使用來自JRuby的Swing,我試圖設置一個帶TableModel作爲輸入的JTable。
table_headers看起來像這樣:[「bla」,「narf」,「poit」]
table_data看起來像這樣:[[「one」,「two」],[「test,test」],[「你好」, 「世界」]]JRuby和Swing DefaultTableModel(「沒有參數匹配[...]的構造函數」)

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

C:/jruby/lib/ruby/site_ruby/shared/builtin/javasupport/java.rb:51:在 '新」 :沒有帶參數的構造函數 與對象 (NameError)上的[class org.jruby.RubyArray, class 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:具有匹配 [類 有機參數沒有構造。 jruby.java.proxies.ArrayJavaProxy, 類 org.jruby.java.proxies.ArrayJavaProxy] 的對象(NameError)

不知道如何解決這個問題?
另外:是不是有一種「簡單」的方式來簡單地創建一個表並設置字段?

P.S.:

BLA = SomeTable.new(5,5)
BLA [2] [1] = 「編輯」
例如沿着線的東西)正如你可能從錯誤消息中看到的那樣,我必須使用windows

回答

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) 

...等

另外:是不是有一個「簡單」的方法來簡單的創建一個表,並設置田野?

你可以創建自己的包裝,或者看看MonkeyBarsprofligacy

+0

有什麼辦法實際添加數據「列」明智的。 我似乎無法添加超過1條數據到add_column命令:( – 2010-02-11 08:24:09

+0

看起來行是第一順序,列是第二順序,這對我來說是有意義的(否則會產生混淆)。做? – Rob 2010-02-11 21:51:14

相關問題