我是Java GUI新手,嘗試在SWING中使用jTable。我現在有一個我按照甲骨文的教程製成,它通過使用得到表中的數據:來自ArrayList對象的Java jTable數據和其他方法的更新
Object[][] data = {
{"Kathy", "Smith",
"Snowboarding", new Integer(5), new Boolean(false)},
{"John", "Doe",
"Rowing", new Integer(3), new Boolean(true)},
{"Sue", "Black",
"Knitting", new Integer(2), new Boolean(false)},
{"Jane", "White",
"Speed reading", new Integer(20), new Boolean(true)},
{"Joe", "Brown",
"Pool", new Integer(10), new Boolean(false)}
};
我有一個包含項目對象的數量不受限制名爲訂單的對象,它有一個ArrayList(productsInOrder)。我正在試圖讓該表爲ArrayList中的每個對象顯示以下每個對象。 productsInOrder.getPrice()productsInOrder.getSKU()productsInOrder.getName()
任何人都可以指向正確的方向嗎?或者將我鏈接到一個教程,可以幫助我查看整個互聯網,無法弄清楚這一點。
最後,我在其他地方有一個動作偵聽器,當用戶執行某些動作時,它將更多的Product對象添加到ArrayList。我將如何更新jTable?簡單地通過在動作監聽器中重新加載整個jTable,或者是否有一種方法可以簡單地向表中添加另一行?
@Joseph Flynn我投票支持http://java.sun.com/products/jfc/tsc/articles/ChristmasTree/ @camickr +1 – mKorbel
@camickr - 感謝指點我回到那個教程,重新閱讀是一個很大的幫助。我仍然不明白的一點是熱點更新表。我在其他地方使用ArrayList,所以我應該更新打擾自定義TableModel中的ArrayList和addRow(...)方法?這是不好的編碼習慣,因爲它會重複代碼?謝謝。 – Joseph
正如我建議你應該直接更新TableModel,而不是ArrayList。 RowTableModel具有諸如addRow()和removeRow()之類的方法,因此您可以訪問各個對象。如果直接更新ArrayList,TableModel不知道數據已更改。在這種情況下,在你的代碼中更新ArrayList的地方,你還需要調用table.repaint()來強制重繪整個表,這不是一個好主意,因爲在MVC設計中,它是模型在數據發生變化時通知視圖。 – camickr