# JTable Spalte hinzufügen



## Strowi (31. Mai 2005)

hi zusammen,

ich hab hier ien ziemliches Problem mit JTable.
Das Programm importiert eine CSV-Tabell, stellt sie mit Swing+ JTable dar.
Weiterhin will ich jetzt die Spaltenüberschriften (die zuvor aus der CSV-Datei importiert wurden) veränderlich machen, bzw. auch die Tabelle erweiterbar machen.

Source-Code gibts HIER
Leider habe ich aber folgendes Probleme:

1. Die neue Spalte wird zwar mit der Überschrift angezeigt, die ich ausgewählt habe, aber wenn ich das ganze wieder exportiere, steht dort stattdessen der Name der ersten Spalte.

2. Die neue Spalte wird mit den Werten der ersten Spalte initialisiert.


der Fehler liegt wohl in 'actionperformed' im 'Add'-Zweig... 
Ich muss wohl manuell die Spalte vom View zum Model bekommen, aber wie??

Kann mir jmd. sagen wie ich eine neue Spalte mit manuell gewählter Überschrift hinzufügen kann?


vielen Dank schonmal!


----------



## Zilchinger (31. Mai 2005)

Hi Strowi,
ich habe mir den Quelltext jetzt nicht genau angeschaut,
aber ich habe keine TableModell gesehen.

Normalerweise ist eine JTable nur ein Layout, welches Daten repräsentiert, die in einer gewissen Datenstruktur gehlaten werden.

Diese Datenstruktur ist im Normalfall ein DefaultTableModell,
oder aber du baust dein eingenes und nutzt dafür das  AbstractTableModell.
Es gibt da noch jede Menge mehr Modells um das Design der Tabelle zu verändern...

Das ganze ist ein bischen zu kopliziert, um es hier zu beschreiben, aber schau mal im Netz nach Tutorials, da gibt es jede Menge.


----------



## L-ectron-X (1. Jun 2005)

Warum irgendwo im Netz? Hier gibts eine tolles JTable-Tutorial in den FAQs:  :wink:
http://www.java-forum.org/de/viewtopic.php?t=5321


----------



## Strowi (3. Jun 2005)

hi zusammen,

danke für die Tipps, ich bin schon einige Schritte weiter, und habe nun sogar div. CellEditoren geschrieben.
Klappt eigentlich alles wunderbar... bloss das Löschen von Spalten (und den dazugehörigen Daten) klappt leider überhaupt nicht ordentlich. Die Daten werden immer durcheinandergewürfelt.;(

Könnte mir da vielleicht jmd. weiterhelfen?

Hier mla die removeColumn() Methode wie ich sie drin habe:

```
*/
    public void removeColumn(JTable table, Object headerLabel) {
        
        TableColumn[] colView = getColumnsInView(table);
        int colDel = table.getColumn(headerLabel).getModelIndex();
        
        
        table.getColumnModel().removeColumn(table.getColumn(headerLabel));
        
        
        for (int col=table.getColumnCount()-1;col > colDel;col--){
            
            colView[col].setModelIndex(col);
            table.getColumnModel().getColumn(col).setModelIndex(colView[col].getModelIndex());
            
            for (int row = 0;row<table.getRowCount();row++){
                table.setValueAt(model.getValueAt(row, col), row, col+1);
            }
        }
    }
```
vollständigen Code der Hauptklasse gibt's hier: HIER.


----------

