2012-04-09 154 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