Newsgroup: it.comp.java
Titolo: AbstractTableModel e DefaultTableModel

Vorrei capire alcune cose.
Io mio creo una TabModel sottoclasse di
Abstract.
class TabModel extends AbstractTableModel {
        final
String[] columnNames = {.....};
        final Object[][] data = {... };
Mi implemento semplicemente i tre metodi:
  public int getRowCount();
public int getColumnCount();
  public Object getValueAt(int row, int
column);
Passo il tutto ad una JTable(lo faccio in vaj ma è lo stesso) e
questo funziona. Qui il primo dubbio: io non gli ho detto dove mettere i
dati e dove i nomi colonna. Come fa??? (Ho notato che ho un solo
costruttore di default senza argomenti e basta).
Il secondo problema è
con le DefaultTableModel.
Ne creo una sulla falsa riga della precedente.
Non implemento nessun metodo però perchè non mi sembra che sia richiesto.
A questo punto passo alla JTable la mia lista (sempre in vaj).
E non
funziona. Qui ho molti costruttori non come prima.E' qui il problema?
Se
prima non sapevo come facesse il costruttore a prendere i dati giusti qui
ancora di piu.
Per di più in vaj non ho la più pallida idea di come devo
collegare la JTable alla DefaultTableModel in questo secondo caso...
Qualcuno riesce a farmi un po di luce sull'argomento???
Grazie
Gabriele
--------------------------------
Inviato via 
http://usenet.iol.it

Facciamo un passo alla volta ok?
- AbstractTableModel è una classe ASTRATTA e che definisce i metodi
necessari alla JTable per recuperare le informazione dalla tua struttura
dati.
L'implementazione poi glie la dai tu.
Per come hai scritto tu il codice ti troveresti un errore in fase di
compilazione, perché non hai implementato i metodi obbligatori della
AbstractTableModel, ma hai cercato di fare un overriding di metodi astratti
con altri metodi astratti.
Quando estendi la classe AbstractTableModel, qui metodi li devi implementare
tu.
Sei tu che scegli la logica di funzionamento.
Es :
public class TabModel extends AbstractTableModel
{
    private String[] columnNames;
    private Object[][] data ;
    // Serve un costruttore che accetti una struttura dati o nel caso che
non ne ottenga nessuna, ne crei una eventuale di dedault.
    public TabModel(Objcet list[][])
    {
        data = list;
        // Inizializzo i nomi di Default delle colonne
        columnNames = new String[list[0][0].length];
        int numCol = columnNames.length;
        for(int i = 0; i<numCol; i++)
                columnNames[i] = new String("Default "+(i+1));
    }
    public int getRowCount()
    {
        return data[0].length;
    }
    public int getColumnCount()
    {
        return data[0][0].length;
    }
    public Object getValueAt(int row, int column)
    {
        // Qui puoi fare tutti i controlli che ti pare
         return data[row][column];
     }
  // ora puoi implementare tutti i metodi che più ti fanno comodo
  // Ad esempio puoi usare come struttura dati un Vecotor di Array
  // monodimensionali (che rappresentano le colonne) dove memorizzare i tuoi
dati.
  // Poi nel gatValueAt ti fai dare solo le colonne che ti sevono.
  // Per esempio puoi fare un metodo che associa le colonne del bufferDati
alle colonne della griglia.
  // Quindi anche se il buffer dati ha più colonne di quelle che servono,
puoi filtrarle a tuo piacimento.
}
La CLASSE DefaulTableModel, già fa tutto questo (ovviamente lo fa come dice
lei perchè si implementa la AbstactTableModel con una sua logica che nel 90%
dei casi risolve tutti i provlemi dell'utente), è una classe istanziabile e
basta passargli una struttura dati.

 basta passargli una struttura dati.
E infatti me ne sono accorto. Il mio dubbio era proprio qui, nel fatto che
qui ho diversi costruttori e quindi diversi modi di passare la struttura
dati.
Lavorando in codice java puro la cosa mi risulta facile, ma lavorando (per
forza e non per scelta) con Visual Age mi trovavo nella difficolta di dirgli
con quale metodo implementarla questo modello (cosa che non avveniva nel
caso dell'abstract perchè lui ha un solo costruttore).
Grazie

Qualcuno riesce a farmi un po di luce sull'argomento???
http://java.sun.com/docs/books/tutorial/uiswing/components/table.html
Ma magari lo hai già letto. ;-)
-- 
Ciao
	Fabrizio C.