2014-03-24 57 views
0

我使用樹形圖填充JTable並且正在通過SQL填充樹形圖,我的問題是我只能在一行中通過樹形圖填充,是嗎?可以寫一個代碼(即計數器)說,添加一個新行通過樹形圖和SQL填充JTable

這是代碼行:

library.put("01", new Item(res.getString(2),(res.getString(3), Integer.parseInt(res.getString(4)))); 
+1

是否有可能寫一個代碼(即計數器)說添加一個新行==是的,不要使用HashWhat作爲底層數組爲Swing JComponents /它的模型,使用util.List而不是(在必須存儲在分離數組中或兩次) – mKorbel

+0

歡呼我會試一試 – user3396322

+0

您是否使用TableModel? –

回答

1

「是有可能寫出說添加一個新的代碼(即計數器) line「

聽起來對我來說,您將數據保存在兩個單獨的數據結構中,一個在您的TreeMap中,另一個在JTable的基礎TableModel中。這是沒有必要的。數據只能保存在TableModel中。請參閱Creating a TableModel

要動態添加行最簡單的方法是使用DefaultTableModel,該工具負責fireXxx方法,以便您更新表格。您可以使用Item對象編寫自己的XxxTableModel對象,但可能沒有必要。

對於DefaultTableModel如果您沒有初始數據,您可以使用0行(僅列名稱)設置模型以啓動。

String[] cols = { "Col 1", "Col 2", "Col 3" }; 
DefaultTableModel model = new DefaultTableModel(cols, 0); 
JTable table = new JTable(model); 

如果有一些初始數據,你可以使用構造

DefaultTableModel(Object[][] data, Object[] cols) 

然後動態地添加行,只需使用model.addRow(Object[])。類似於

Object[] row = { res.getString(2), 
       res.getString(3), 
       Integer.parseInt(res.getString(4)) 
       }; 
model.addRow(row); 

該表格將自動爲您更新,請致電addRow

您正在使用TreeMap的事實可能表示您希望對數據進行排序。在這種情況下,你可能想看看Sorting and Filtering Tables