AbstractTableModel und getRowCount

ohli

Grünschnabel
Hallo Leute,

ich habe folgendes Problem.Ich möchte eine Bilanztabelle darstellen.Sie besteht aus einem JTable mit AbstractTableModel.

Die Tabelle ist folgendermaßen aufgebaut:

Die ersten 3 Spalten sind für die Aktivseite seite und die letzten 3 für die Passivseite.

Aktivseite
Spalte 0 = Bezeichnung des Kontos(z.B. Rohstoffe)
Spalte 1 = aktueller Wert des Kontos in euro(double)
Spalte 2 = vorjahreswert des Kontos in euro(double)

Passivseite
Spalte 3 = Bezeichnung des Kontos
Spalte 4 = aktueller Wert
Spalte 5 = vorjahreswert

Es existieren 2 Vectoren, in denen die Namen der Konten gespeichert werden

vecBezeichnungenAktiv und vecBezeichnungenPassiv

Das Problem ist, das in Spalte 0 "vecBezeichnungenAktiv" aufgerufen werden soll und
in Spalte 3 "vecBezeichnungenPassiv".Mit einem Vector ist das kein Problem.

Code:
public int getRowCount() {
        return vecBezeichnungenAktiva.size();
    }
Meine Frage ist, wie kann die Methode so überschreiben das sie mir in Spalte 0 "vecBezeichnungenAktiv" zurück gibt und in Spalte 4 "vecBezeichnungenPassiv" zurück gibt.

Dieses habe ich schon probiert, funktioniert aber nicht.

Code:
public int getRowCount() {
        
        int columnIndex = this.getColumnCount();
        
        if(columnIndex == 0){
        
        return vecBezeichnungenAktiv.size();
        }
        else
            
            if(columnIndex == 3){
            return vecBezeichnungenPassiv.size();
Ich hoffe jemand weiss eine Lösung.

Gruß
Ohli...
 
Hallo,

dein Ansatz funktioniert schon mal nicht, da du ja den ColumnCount abfragst und dieser ist bei dir sechs, da du sechs Spalten hast.

Ich verstehe sowieso nicht warum du das so machen möchtest, da getRowCount für die gesamte Tabelle zählt und nicht nur für jede Spalte extra.

Könntest du bitte mal erklären, warum du das so machen möchtest.

MFG

Sascha
 
Hallo Sascha,

in möchte in meiner Tabelle in den ersten drei spalten ja die Aktivseite einer Bilanz darstellen:

Der Aufbau:

KontonameAktiv, wertAktuellAktiv, wertVorjahrAktiv

für jedeSpalte existiert ein Vector.Bis jetzt habe ich mir die Werte über den Vector "vecKontoNameAktiv" geholt.Hat auch bis jetzt funktioniert.

Jetzt möchte ich aber die Passivseite, die genau so aufgebaut ist wie die Aktivseite, in Spalte 3 ,4 und 5 ausgeben.

Hier wollte ich jetzt die Werte über den Vector "vecKontoNamePassiv" holen.
Wie gesagt,hat leider nicht funktioniert :-(

Mein Problem ist ja das ich in Spalte 0 "vecKontoNameAktiv" brauche und in Spalte 3 "vecKontoNamePassiv."

Ich hoffe das Problem ist etwas klarer geworden.

Gruß
Ohli...
 
Das hast du ja auch so oben erklärt. Das ganze ist aber egal, wenn es um die Anzahl der Zeilen der Tabelle geht.

Bei getRowCount müsstest du eigentlich nur die Größe den größten Vectors zurückgeben.

Code:
public int getRowCount() {
        return Math.max(vecBezeichnungenAktiva.size(),vecBezeichnungenPassiv.size());
    }


Die Werte nimmst du ja nicht bei getRowCount.
Da musst du dann natürlich die Methode getValueAt() überschreiben.

MFG

Sascha
 
Zurück