2009-05-13 14 views

risposta

6

TableModel si occupa solo dei dati, ListSelectionModel si occupa di ciò che è attualmente selezionato, quindi no non è possibile ottenere la riga selezionata da TableModel.

13

Come ha detto MrWiggles, è possibile scaricarlo da ListSelectionModel accessibile dal tavolo stesso. Tuttavia ci sono metodi di convenienza in JTable per ottenere anche le righe selezionate. Se la tabella è ordinabile ecc avrete anche bisogno di passare attraverso il metodo convertRowIndexToModel :)

Dal JavaDoc JTable:

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

Questo ha funzionato e dovrebbe essere la risposta corretta –

+0

Vedi http://docs.oracle.com/javase/7/docs/api/javax/swing/JTable.html per ulteriori informazioni. – FacundoJ

+0

Funziona, grazie! – Lipstick

0

Se si lascia che la classe del modello implementare ListSelectionModel così come TableModel, vi sarà in grado di ottenere la selezione da un modello ... ma non puoi estendere due classi di modelli astratti :-((Non è comunque una buona idea dato che la tua classe avrà troppe responsabilità)

0

Puoi ottenere l'indice dalla tabella vincolata e quindi è possibile utilizzarlo per manipolare il modello di tabella. Ad esempio, se voglio eliminare una riga nella mia tabella Modello:

myTableModel.removeValueAt(myTable.getSelectedRow()); 
Problemi correlati