PDA

Visualizza la versione completa : [JAVA] JTable e oggetti da inserire al suo interno


kadorit
07-11-2005, 14:55
Honcreato una classe che il Table Model:

import javax.swing.table.*;
import java.util.*;

public class Modello extends AbstractTableModel
{
String [] string ={"Nome","Cognome","Altro"};
Vector vett = new Vector();

public Modello()
{
vett.addElement("ciao");
vett.addElement("prova");


}
public Object getValueAt(int rows,int cols)
{
return vett.get(0);
}

public int getColumnCount()
{
return 3;
}

public String getColumnName(int col)
{
return string[1];
}

public int getRowCount()
{
return 2;
}

}

E un'altra che rappresenta la tabella:


import javax.swing.*;

public class Tabella extends JFrame
{
private JTable tabella;
private JPanel panel= new JPanel();

public Tabella()
{
Modello modello = new Modello();
tabella= new JTable(modello);
panel.add(tabella);
setContentPane(panel);
setSize(200,200);
setVisible(true);
}
public static void main(String arg[])
{
Tabella tab = new Tabella();
}
}


Il mio problema che non riesco ad ottenere il primo elemento del Vector nella prima cella e cosi via.

P.S. Ho gi visto il tutorial Sun

Ciao

LeleFT
08-11-2005, 14:01
Direi che un Vector pu andare bene per contenere i valori della tabella, ma deve essere strutturato in modo corretto: nel Vector ci dovrebbero essere degli array di Object e non dei semplici oggetti. In questo modo ciascun elemento del Vector rappresenterebbe una riga della tabella.

A questo punto, nel TableModel:


public Object getValueAt(int rows,int cols) {
Object [] riga = (Object[]) vett.elementAt( rows );
return riga[cols];
}

In questo modo vado a reperire nel Vector la riga desiderata e, dall'array corrispondente, la colonna che mi serve.


Ciao. :ciauz:

kadorit
09-11-2005, 16:44
Originariamente inviato da LeleFT
Direi che un Vector pu andare bene per contenere i valori della tabella, ma deve essere strutturato in modo corretto: nel Vector ci dovrebbero essere degli array di Object e non dei semplici oggetti. In questo modo ciascun elemento del Vector rappresenterebbe una riga della tabella.

A questo punto, nel TableModel:


public Object getValueAt(int rows,int cols) {
Object [] riga = (Object[]) vett.elementAt( rows );
return riga[cols];
}

In questo modo vado a reperire nel Vector la riga desiderata e, dall'array corrispondente, la colonna che mi serve.


Ciao. :ciauz:

Ma poi la matrice che va a comporre la JTable la devo creare andando a mettere gli elementi cella per cella, nel senso:
Il mio Vector formato da un array di String se vado a selezionare la prima cella del vector otterrei il vettore di stringhe che ha nome in prima cella, cognome in seconda e data in terza cella, ora per ottenere nome nella prima cella della JTable, cognome nella seconda e data nella terza e poi a seguire le altre righe come devo fare?
Allego un po di codeice:



public Object getValueAt(int rows,int cols)
{
vett=(db.eseguiQuery("Select nome,cognome,data FROM" +
" anagrafica INNER JOIN diagramma on" +
" anagrafica.id=diagramma.idPaziente"));

String[] v=(String[])vett.get(0);

return v[0];
}


L'output che ottengo cosi il solo nome per tutte le celle

LeleFT
10-11-2005, 14:25
Non capisco dove sia il problema... se devi popolare la tabella ovvio che te lo devi fare a mano, elemento per elemento: il programma non si pu mica inventare gli elementi che ci vuoi tu.

Per creare la matrice puoi seguire la sintassi degli array:


String [][] string ={
{"Nome1","Cognome1","Altro1"}
{"Nome2","Cognome2","Altro2"}
{"Nome3","Cognome3","Altro3"}
...
};

O forse non ho capito io qual il tuo problema... :confused:


Ciao. :ciauz:

Loading