DefaultTableModel Problem

jb007

Mitglied
Hallo,

leider habe ich ein kleines Problem mit den JTables.

Ich habe über Netbeans ein JTable erstellt und dem Table im Konstrunktor ViewTopComponent() über setColumnModel ein ColumnModel() und über setModel() ein DefaultTableModel übergeben.

Funktioniert auch alles ganz gut bis auf die Tatsache, dass die Werte in den Zellen nicht korrekt dargestellt werden:

Hier kurz mein TableModel:

public class DataModel extends DefaultTableModel {
Code:
    String data[][] = new String[][]{
            {"A", "R", "T", "E", "M", "I", "S"},
            {"A 2", "R 2", "T 2", "E 2", "M 2", "I 2", "S 2"}
    };
    Vector columnNames;
   
         
    public DataModel(Vector columnNames)
    {
        super(columnNames, 0);
       
        this.columnNames = columnNames;
       
        createVectorList();
    }
   
   
    public boolean isCellEditable(int row, int column)
    {
        return false;
    }
   
   
    public void createVectorList()
    {
        setDataVector(convertToVector(data), columnNames);
        /*
        // habs auch mal so probiert, haut auch nicht hin
        for(int i = 0; i < data.length; i++)
        {
            Vector rowData = new Vector(7);
            String[] rowStringData = data[i];
           
            for(int j = 0; j < rowStringData.length; j++)
            {
                setValueAt(rowStringData[j], i , j);
                rowData.add(rowStringData[j]);
            }
           
            addRow(rowData);
        }
        */
    }

}

Nun passiert folgendes, in row 1 wird in allen 7 Zellen/Spalten nur ein A
und in row 2 nur ein A 2 ausgegeben.

Könnte mir vielleicht jemand erklären wo hier der Fehler liegt ?

Vielen Dank schon einmal.

Gruß Jens
 
Hallo Jens,

habe dein TableModel mal benutzt, das geht doch.

Code:
import java.util.Vector;
import javax.swing.*;
import javax.swing.table.DefaultTableModel;

public class DataModel extends DefaultTableModel 
{
    String data[][] = new String[][]{
    {"A", "R", "T", "E", "M", "I", "S"},
    {"A 2", "R 2", "T 2", "E 2", "M 2", "I 2", "S 2"}
    };
    Vector columnNames;

    public DataModel(Vector columnNames)
    {
        super(columnNames, 0);
        this.columnNames = columnNames;
        createVectorList();
    }
    
    public boolean isCellEditable(int row, int column) {return false;}

    public void createVectorList() {setDataVector(convertToVector(data), columnNames);}

    public static void main(String[] args)
    {
        Vector titleRow = new Vector();
        titleRow.add("1");
        titleRow.add("2");
        titleRow.add("3");
        titleRow.add("4");
        titleRow.add("5");
        titleRow.add("6");
        titleRow.add("7");
        JFrame frame = new JFrame("DataModelTest");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        JTable table = new JTable(new DataModel(titleRow));
        frame.getContentPane().add(new JScrollPane(table));
        
        frame.setSize(400, 250);
        frame.setVisible(true);
    }
}
PS: Bitte den Code-Tag für Sourcecode benutzen.
 

Anhänge

  • DataModel.JPG
    DataModel.JPG
    9,1 KB · Aufrufe: 52
Zuletzt bearbeitet:
Hallo Bernd,

vielen Dank für Deine Antwort.

Sorry, dass meine Antwort so lange gedauert hat, aber ich bin beruflich ziemlich eingespannt.

Ich glaube ich hatte noch einen kleinen Zusatz vergessen.

Das DefaultTableModel übergebe ich nicht dem Konstruktor einer JTable sondern
setze das Model erst später über die Methode setModel().

Ich glaube hier liegt einfach das Problem. Über den Konstruktor geht das bei mir auch.

Jetzt frage ich mich natürlich, woran das liegt bzw. ob ich noch weitere Methoden aufrufen muß damit der Weg, den ich versuche auch funktioniert.

Gruß Jens
 
Zurück