2009-05-13 9 views

Antwort

6

Das TableModel befasst sich nur mit den Daten, das ListSelectionModel befasst sich mit dem, was gerade ausgewählt ist, also, nein, Sie können die ausgewählte Zeile nicht aus dem TableModel abrufen.

13

Wie MrWiggles sagte, können Sie es aus dem ListSelectionModel abrufen, auf das Sie von der Tabelle selbst zugreifen können. In JTable gibt es jedoch bequeme Methoden, um auch die ausgewählten Zeilen zu erhalten. Wenn Ihre Tabelle sortierbar etc ist, werden Sie auch durch die convertRowIndexToModel Methode gehen müssen :)

Vom JTable JavaDoc:

int[] selection = table.getSelectedRows(); 
    for (int i = 0; i < selection.length; i++) { 
    selection[i] = table.convertRowIndexToModel(selection[i]); 
    } 
    // selection is now in terms of the underlying TableModel 
+2

Das funktionierte und sollte die richtige Antwort –

+0

http://docs.oracle.com/javase/7/docs/api/javax/swing/JTable.html für weitere Informationen vorgenommen werden. – FacundoJ

+0

Es funktioniert, danke! – Lipstick

0

Wenn Sie Ihre Modellklasse ListSelectionModel sowie Tablemodel implementieren lassen, werden Sie Sie können nicht zwei abstrakte Modellklassen erweitern :-((Es ist auch keine sehr gute Idee, da Ihre Klasse zu viele Verantwortungen hat)

0

Sie können den Index erhalten B. aus der gebundenen Tabelle heraus und dann können Sie damit das Tabellenmodell manipulieren, zB wenn ich eine Zeile in meiner Tabelle löschen möchte Modell:

myTableModel.removeValueAt(myTable.getSelectedRow()); 
Verwandte Themen