Originariamente inviato da fcorsa
credevo ci fosse un metodo specifico per questo tipo di operazioni tipo addColumn ,che fa altro.
No. Se estendi AbstractTableModel non c'è una struttura dati predefinita!!!! Sei tu che eventualmente puoi/devi definirla come ti pare (Object[][], TuoRecord[], List<TuoRecord> ecc...). E nel tuo caso sopra addirittura siamo nel caso speciale in cui il tuo table model non ha nemmeno una struttura dati "fisica" in quanto semplicemente "chiede" i dati al ResultSet!!!
DefaultTableModel ha ad esempio metodi come addColumn(), addRow() ecc... ma perché "ha" una sua struttura dati fisica interna (Vector di Vector di Object) che gestisce lui completamente e quindi offre tutti i metodi che hanno senso per espanderla, gestirla, ecc....
Originariamente inviato da fcorsa
cmq potresti farmi vedere come modificarmi tablemodel per una colonna in più, perchè ho cercato di fare come dicevi ma non ci sono riuscito.
Volendo mettere una colonna opzionale in più al fondo che mostra una stringa uguale per tutte le righe:
(molto abbozzato)
codice:
public class ResultSetTableModel extends AbstractTableModel {
private ResultSet rs;
private ResultSetMetaData rsmd;
private int numeroColonne;
private String valoreColonnaAggiuntiva;
public ResultSetTableModel(ResultSet rs, String valoreColonnaAggiuntiva)
throws SQLException {
this.rs = rs;
rsmd = rs.getMetaData();
numeroColonne = rsmd.getColumnCount();
this.valoreColonnaAggiuntiva = valoreColonnaAggiuntiva;
}
public int getColumnCount() {
if (valoreColonnaAggiuntiva == null) {
return numeroColonne;
} else {
return numeroColonne + 1;
}
}
public Object getValueAt(int row, int column) {
if (column == numeroColonne) {
return valoreColonnaAggiuntiva;
} else {
// .... leggi dal record alla riga 'row' ....
}
}
// ..... altro ......
}
Solo se costruisci il table model passando una stringa non null hai la colonna in più.
Insomma ... è solo questione di "logica" e qualche calcolo.