Mal wieder die JTable

Bin mir nicht sicher, aber ich denke dein Problem könnte daran liegen, dass du eine ArrayList benutzt. Soweit ich weiß geht hier nur ein Vector oder ein 2D-Array.
Zuvor hatte ich ja das Model mit einem 2D-Array abegeben, was also wei eine 2D Koordinatensystem die Daten speichert. Eine ArryList speichert sich glaub ich nur 1D. Das heißt Java weiß nicht wie es die Daten aus der ArryList auslesen soll
 
@Matze from Hwl
Eine ArrayList ist eigentlich das gleiche wie ein Vector. Der einzige Unterschied ist, dass ein Vector thread-sicher ist.

Wie die Tabelle an die Daten kommt ist in dieser Methode deklariert
Code:
/**
     * Liefert das Object der gewuenschten Zelle
     */
    public Object getValueAt(int rowIndex, int columnIndex) {
	if(data != null){
		Object[] o = data.get(rowIndex);
		return o[columnIndex];
	}
	return null;
    }

Im Grunde genommen ist es völlig egal wie die Daten gespeichert werden. Wenn man ein eigenes Model implementiert, ist man selbst dafür verantwortlich wie die Daten in die Tabelle kommen.

MFG

zEriX
 
Jetzt hab ich aus data ein zwei-dimensionales Array gemacht und die Methode sieht jetzt so aus:

Code:
public void setData(ArrayList<Object[]> newData) 
{
    Object[][] tempData = new Object[newData.size()][];
    for(int i=0;i<newData.size();i++) {
        tempData[i] = newData.get(i);
    }
    this.data = tempData;        
    fireTableDataChanged();   
}

Das Problem ist immer noch dasselbe, obwohl alle Variablen die richtigen Werte enthalten.
 
Ich hab ja auch im Post oben drüber erklärt, dass es vollkommen egal ist. Mit einem 2D-Array, hast du nur das Problem, dass du nicht einfach eine Zeile hinzufügen kannst.

Ich frag nochmal, hast du einen eigenen CellRenderer implementiert?

MFG

zEriX
 
Ich benutze einen CellRenderer für die Columns, sonst keinen.

Langsam reichts mir echt mit dieser JTable, ich will einfach Strings in diese blöde Tabelle reinschreiben, ich will nix formatieren oder sonstiges.
Es kann doch nicht sein, dass ich für so was einfaches 2 eigene Klassen schreiben muss.

Die Tabelle hat das TableModel wo die Daten drin sind, das ist alles da.
Da kann kommen wer will, das Ding ist einfach buggy.
 
Die Table ist nicht buggy. Das Model ist dafür da die Daten zu halten. Der Renderer ist dafür da wie die Daten angezeigt werden. Die JTable für sich ist sogesehen der Controller mit dem das Model und die View(Renderer) controlt werden.

Hast du allen Columns den Renderer hinzugefügt?

Poste mal bitte den Quellcode.


Da die Daten alle im Model sind, vermute ich einfach mal, dass du die Daten mit dem Renderer falsch anzeigst.
Das Standard-Model und der Standard-Renderer, sind nur für die einfachsten Sachen gedacht. Sun kann nicht wissen was du wie in der Tabelle darstellen möchtest. Deshalb musst man diese Klassen selbst implementieren.

MFG

zEriX
 
Ich benutze den Renderer nur zum setzten des Header-Formats, ich hab auch gar kein eigenes ColumnModel, wo ich den Renderer anwenden könnte.
Der Renderer schreibt mir, nach meinem Verständnis auch keine neuen Daten in die Spalte, also was soll mir der Renderer bringen, falsche Daten formatieren ist ja nicht gerade sinnvoll.

Aber wie gesagt, meiner Meinung handelt es sich bei mir um den einfachsten Fall:
Alle Daten sind Strings, die Tabelle ist vorher leer und wird mit Daten gefüllt, die Zellen sind vollkommen unformatiert.
 

Neue Beiträge

Zurück