2012-04-09 144 views
0

我有一個連接到sqlite的JTable。 db表看起來是這樣的:java JTable如何跟蹤行

resource_id #primary_key, file, type 

我已經實現了從數據庫中添加的行,但問題是我需要知道資源ID時JTable中某一行被選中(而不是索引)。有沒有辦法添加具有唯一標識的行,而不是基於索引(或類似的東西)?

當前的解決方案將資源ID添加爲表列,但這並不能完全解決問題。

+0

_The目前的解決方案將資源ID作爲一個表列,但是這並不解決問題completely._爲什麼它不解決問題完全? – Sandro 2012-04-09 20:48:15

+2

將'resource_id'保留在'TableModel'中,只是不顯示它。另外,請編輯您的問題以包含您當前的方法[sscce](http://sscce.org/)。 – trashgod 2012-04-09 20:48:48

回答

2

創建一個包含表格數據的類別TableData。使用自定義TableModel並將JTable的數據放入Vector<TableData>

您可能會發現在您的TableModel中創建一個方法(如addRow(TableData data)),該方法處理表中的數據並將數據添加到Vector

在重寫的方法public removeRow(int row)你將需要刪除的矢量數據,其中列可以作爲指標。

用於在JTable中顯示數據的重寫方法public Object getValueAt(int row, int col)將只需要從Vector<TableData>中檢索數據。您也可以將此方法中不屬於TableData的其他列的邏輯放置。

不要忘記調用fireTableRowsUpdated(row,col)和fireTableCellUpdated(row,col)哪裏適用。

有關進一步的參考,如何處理在JTable的選擇,你可以參考this tutorial