Newsgroup: it.comp.java
Titolo: [HELP] eliminare gli elementi di una JTable

ciao,
ho il seguente problemuccio che non sono riuscito ancora a risolvere.
ho una JTable che viene popolata partendo da una query SQL.
poi posso selezionare un record sulla tabella e lavorarci. (fin qui
tutto bene).
il problema nasce quando a seguito di qualche operazione devo popolare
la tabella con altri dati, ovviamente togliendo i record
precedentemente caricati.
io per ora faccio così:
//uso il sorter per poter...(vabbè)
TableSorter ts = (TableSorter) this.ticketTable.getModel();
DefaultTableModel dm = (DefaultTableModel) ts.getTableModel();
 
int curRow=0;
while(dm.getRowCount()>1)
{
    //non sono capace di cancellare i record selezionati!!!
    if(ticketTable.isRowSelected(curRow))
    {
        curRow++;
    }
 
    dm.removeRow(curRow);
}
//aggiorno il numero di righe con il nuovo risultato
dm.setRowCount(numofrows);
credo esista un modo per cancellare tutti i record dalla tabella in un
colpo solo, cancellando anche quelli selezionati, ma non sono ancora
riuscito a capire come fare.
in sostanza i problemi sono due:
- come cancellare tutti record di una JTable
- come togliere la selezione da un record
avete idee e/o suggerimenti?
ciao e grazie,
l

 - come togliere la selezione da un record
removeRowSelectionInterval
public void removeRowSelectionInterval(int index0,
                                       int index1)
    Deselects the rows from index0 to index1, inclusive.
HTH
ciao

....
JPanel jpLocale;
JScrollPane jspLocale;
...
...
Vector tableColumnsName = connection.getColumnsName(database, table);
Vector tableData = connection.getTableData(database, table);
tableLocale  = new JTable(tableData, tableColumnsName);
jpLocale.remove(jspLocale);
jpLocale.add (jspLocale = new JScrollPane (tableLocale),4);
tableLocale.addMouseListener (listenerClickTableLocale);
...

 
beh grazie.
ma queste non sono nient'altro che le funzioni scritte nella
documentazione ed esattamente quelle che usavo (o provavo ad usare)
senza successo.
in effetti la mia domanda era (forse con un colpevole sottinteso)
sull'utilizzo di queste funzioni o su tecniche diverse, non tanto sul
tipo di funzione da chiamare.
io ho il seguente codice
TableSorter ts = (TableSorter) this.ticketTable.getModel();
DefaultTableModel dm = (DefaultTableModel) ts.getTableModel();
for(int curRow=0;curRow<ticketTable.getRowCount();curRow++)
{
    if(ticketTable.isRowSelected(curRow))
    {
	ticketTable.removeRowSelectionInterval(curRow,curRow); // <--
ArrayIndexOutOfBoundsException!!!!!
    }
}
dm.setRowCount(0);
dm.setRowCount(numofrows);
e quando chiamo la removeRowSelectionInterval(curRow,curRow) mi si
genera una ArrayIndexOutOfBoundsException con stringa di errore "-1"
(ve la scrivo solo perchè la trovo splendida).
se tolgo il for (lasciando quindi solo le due serRowCount) l'eccezione
viene sollevata dalla setRowCount(0) finchè non tolgo la selezione dal
record.
se non ci sono record selezionati tutto è OK.
idee?
l

...
grazie a tutti per l'aiuto ma ho trovato il baco (perchè di vero e
proprio baco si trattava).
l'errore era dovuto ad una mala gestione dell'evento 
public void valueChanged(ListSelectionEvent event)
che viene lanciato anche dal TableSorter e che non gestivo in maniera
corretta.
ora tutto sembra funzionare correttamente.
grazie ancora,
l

 	ticketTable.removeRowSelectionInterval(curRow,curRow); // <--
stando alla doc, dovrebbe essere ok.
hai impostato un tuo selectionModel?
hai provato a fare semplicemente:
ticketTable.removeRowSelectionInterval(0,ticketTable.getRowCount()-1)
ciao