2012-04-09 19 views
0

Ich habe eine JTable die an sqlite verbunden ist. Die db-Tabelle sieht wie folgt aus:Java JTable wie Zeilen verfolgen

resource_id #primary_key, file, type 

ich bereits die Zeilen von db Hinzufügen implementiert haben, aber das Problem ist, ich die Ressource-ID wissen müssen, wenn einige Zeilen in jTable ausgewählt wird (nicht den Index). Gibt es eine Möglichkeit, Zeilen mit eindeutigen IDs hinzuzufügen und nicht auf Indizes (oder ähnlichem) zu basieren?

Die aktuelle Lösung fügt die Ressourcen-ID als eine Tabellenspalte, aber das tut, das Problem vollständig lösen.

+0

_Die aktuelle Lösung fügt die Ressource-ID als Tabellenspalte beziehen, aber das tut lösen das Problem completely._ Warum es nicht die Lösung Problem vollständig? – Sandro

+2

Behalten Sie die 'resource_id' in Ihrem' TableModel', zeigen Sie sie einfach nicht an. Bearbeiten Sie auch Ihre Frage, um eine [sscce] (http://sscce.org/) zu Ihrer aktuellen Vorgehensweise hinzuzufügen. – trashgod

Antwort

2

Erstellen Sie eine Klasse sagen TableData, die die Daten aus der Tabelle enthält. Verwenden Sie eine benutzerdefinierte TableModel und die Daten für die JTable in Vector<TableData>.

Sie können es nützlich finden, eine Methode wie addRow(TableData data) in Ihrem TableModel zu erstellen, die die Daten aus der Tabelle verarbeitet und Daten zu dem Vector hinzufügt.

In der überschriebenen Methode public removeRow(int row) Sie die Vektordaten entfernen müssen, wo Zeile als Index dienen kann.

Die überschriebene Methode public Object getValueAt(int row, int col), die die Daten in der JTable anzuzeigen verwendet wird, dann müssen nur die Daten aus dem Vector<TableData> abzurufen. Sie können die Logik für andere Spalten, die nicht Teil von TableData sind, auch in diese Methode einfügen.

Vergessen Sie nicht, rufen fireTableRowsUpdated (Zeile, Spalte) und fireTableCellUpdated (Zeile, Spalte), wo immer anwendbar.

Für weitere Referenz und wie die Auswahl in JTable zur Handhabung Sie this tutorial