2012-04-09 2 views
0

У меня есть JTable, который подключен к sqlite. В таблице БД выглядит следующим образом:java JTable как отслеживать строки

resource_id #primary_key, file, type 

Я уже реализовали добавление строк из БД, но проблема в том, что мне нужно знать идентификатор ресурса, когда некоторые строки в JTable выбран (не индекс). Есть ли способ добавить строки с уникальными идентификаторами, а не на основе индексов (или чего-то подобного)?

Текущее решение добавляет идентификатор ресурса в виде столбца таблицы, но это не полностью решает проблему.

+0

_The текущее решение добавляет идентификатор ресурса в виде столбца таблицы, но то не решить проблему completely._ Почему это не решить проблема полностью? – Sandro

+2

Храните 'resource_id' в' TableModel', просто не показывайте его. Кроме того, пожалуйста, отредактируйте свой вопрос, чтобы включить [sscce] (http://sscce.org/) в свой текущий подход. – trashgod

ответ

2

Создайте класс, скажем TableData, который содержит данные из таблицы. Используйте пользовательский номер TableModel и поместите данные для JTable в Vector<TableData>.

Возможно, вам полезно создать такой способ, как addRow(TableData data), в вашем TableModel, который обрабатывает данные из таблицы и добавляет данные в Vector.

В переопределенном методе public removeRow(int row) вам нужно будет удалить векторные данные, в которых строка может служить индексом.

Переопределенный метод public Object getValueAt(int row, int col), который используется для отображения данных в JTable, просто нужно будет извлечь данные из Vector<TableData>. Вы также можете поместить логику для других столбцов, которые не являются частью TableData в этом методе.

Не забудьте вызвать fireTableRowsUpdated (строка, col) и fireTableCellUpdated (строка, col), где это применимо.

Для дальнейшей ссылки и как обработки выделений в JTable вы можете обратиться this tutorial

Смежные вопросы