2 dimensionales Array in JTable

HowlinMad

Grünschnabel
Moin,

Daten sollen aus einem eindimesionalen Array in ein zweidimensionales Array eingelesen werden und in einer 2-spaltigen JTable ausgegeben werden.

Das Problem ist nun, daß er die erste Spalte richtig anzeigt, aber in der zweiten legiglich den ersten Wert. Der Rest der Felder ist leider leer. Mit System.out.print konnte ich aber feststellen, dass er scheinbar alles richtig in den Arrays gespeichert hat.

Wer kann mir helfen? Wo ist der Fehler? Thx im voraus! :)

Code:

String[][] DATA = new String [Dateizugriff.anzahlDs()/2][Dateizugriff.anzahlDs()];
String[] COLHEADS = {"Baustoff", "U-Wert"};

int jj = 0;
String[] datensatz = new String[Dateizugriff.anzahlDs()];
String einlesen = Dateizugriff.lesen();
StringTokenizer st = new StringTokenizer(einlesen, ";");
while (st.hasMoreTokens())
{
datensatz[jj] = st.nextToken();
jj++;
}

for (int kk=0; kk<=Dateizugriff.anzahlDs()-1; kk++)
{
if (kk%2 == 0)
{
DATA[kk/2][0] = datensatz[kk];
}

else if (kk%2 == 1)
{
DATA[0][(kk/2)+1] = datensatz[kk];
}
}


JTable table = new JTable(DATA, COLHEADS);
table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
JScrollPane scrollpane = new JScrollPane(table);
scrollpane.setBorder(new TitledBorder("Baustoffliste"));
 
Original geschrieben von HowlinMad
Moin,

Daten sollen aus einem eindimesionalen Array in ein zweidimensionales Array eingelesen werden und in einer 2-spaltigen JTable ausgegeben werden.

Das Problem ist nun, daß er die erste Spalte richtig anzeigt, aber in der zweiten legiglich den ersten Wert. Der Rest der Felder ist leider leer. Mit System.out.print konnte ich aber feststellen, dass er scheinbar alles richtig in den Arrays gespeichert hat.

Wer kann mir helfen? Wo ist der Fehler? Thx im voraus! :)

for (int kk=0; kk<=Dateizugriff.anzahlDs()-1; kk++)
{
if (kk%2 == 0)
{
DATA[kk/2][0] = datensatz[kk];
}

else if (kk%2 == 1)
{
DATA[0][(kk/2)+1] = datensatz[kk];
}
}


Nun, Du definierst 2 Spalten, schreibst aber bis Spalte kk/2+1 in

DATA[0][(kk/2)+1] = datensatz[kk];

Ich vermute, richtig wäre
Code:
	   		if (kk%2 == 0)
	   		{
	   			DATA[kk][0] = datensatz[kk];
	   		}
	   		
	   		else if (kk%2 == 1)
	   		{	   			
	   			DATA[kk][1] = datensatz[kk];   			
   		}

Also wenn kk%2 == 0 (also kk gerade ist), wird der Wert in die erste Spalte geschrieben, wenn ungerade dann in die zweite Spalte.
Ich frage mich nur, was in der jeweils anderen Spalte stehen soll für diese Zeile. Aber das musst Du schon selbst wissen. :)
 
@Snape Thx für die Antwort! :)

Mit DATA[kk/2][0] = datensatz[kk];
hauts endlich hin. Manchmal hat man einen Knoten in den Gedanken... Thx für den richtigen Weg!
 
Zurück