SPaltenNamen in JTable zu schreiben

kokoriko

Mitglied
Hallo an Alle ich versuche nach Tagen zu wissen , wie man dynamisch die SpaltenNamen einer Tabelle der Datenbank in der JTable schreiben kann , ich habe von Model gehört und das habe ich auch eingesetzt nur mit GetColumnName Methode hole ich auch die Richtige SßpalteName nur wie kann in der Jtable schreiben.

ein Fragment von meinem Code sieht so aus

[.CODE]

String[] tableColumnsName = {"col 1","col 2","col 3","col 1","col 2","col 3","col 1","col 2","col 3","col 1","col 2","col 3"};
JTable table=new JTable();
DefaultTableModel aModel = (DefaultTableModel) table.getModel();
aModel.setColumnIdentifiers(tableColumnsName);


try {
ResultSetMetaData rsmd = rset.getMetaData();
int nbCols = rsmd.getColumnCount();
for (int k = 1 ; k < nbCols;k++){
String ColName = rsmd.getColumnName(k); /// kriege ich die richtige Spaltennamen
System.out.print( ( ColName ) );



}
[./CODE]

// wie kann ich denn TableColumnsName in meinem Model Schreiben? oder konkret gefragt wie kann ich jetzt ColName in der JTable schreiben?

Kann jemand mir endlich helfen? Das wäre die Erlösung für meine Aufgabe
vielen Danke
 
Hi,

du brauchst glaube ich eine extra Klasse zur Erstellung des Modells.

Ich mach das so...

public class ResultSetTableModel implements TableModel
{
private ResultSetMetaData rsmetadata; //Meta-Informationen
private int cols, rows; //Spaltenanzahl, Zeilenanzahl
private Object[][] rowdata;

/** Konstruktor
* @param results ResultSet mit den Daten der DB-Tabelle */
public ResultSetTableModel(CachedRowSet results) throws SQLException
{
rsmetadata = results.getMetaData();
cols = rsmetadata.getColumnCount(); //Spaltenanzahl in der Ergebnismenge
results.last(); //Springe zur letzten Zeile
rows = results.getRow(); //Zeilenanzahl
results.beforeFirst();
}

public String getColumnName(int columnIndex)
{
try
{
return rsmetadata.getColumnLabel(columnIndex+1);
}catch(SQLException e) { return e.getMessage().toString(); }
}
....

Das ist jetzt nur ein bisschen vom Code... aber mit
--> rsmetadata = results.getMetaData(); und dann
--> return rsmetadata.getColumnLabel(columnIndex+1);
hast die Spaltennamen aus der Datenbank... Ich frag also im Hauptprogramm die Daten bei der Datenbank ab, geb das Resultset zu dieser Klasse und hole mir damit das Model für die JTable...

Sieht dann ungefähr so aus im Hauptprogramm...
ResultSetTableModel tableModel = new ResultSetTableModel(dasResultSet);
JTable.setModel(tableModel);

<-- Anfangs erstell ich ein leeres JTable... das JTable.setModel() wird erst später gemacht im Programm, also nicht wundern ;)

Hier im Forum gibts ne Menge darüber, also einfach mal suchen nach TableModel und ähnlichen....
 
Zurück