F
Flow25
Gast
Hallo zusammen,
in meiner Anwendung gibt es eine Tabelle mit Eurobeträgen. Nun habe ich eine Funktion eingebaut, mit der der User einstellen kann, ob die Erträge als Plus oder die Aufwände als Plus dargestellt werden soll.
Die Tabelle besitzt einen TableCellRenderer, den ich selbst implementiert habe. Sobald der Benutzer nun die Ansicht der Daten umschaltet, so wird der Tabelle ein anderer TableCellRenderer zugewiesen, in dem ich den Wert jedes Labels der Tabelle (jede Zelle) mal -1 nehme. Anschließend weise ich dem value diesen neuen Wert wieder zu.
Da der CellRenderer ja permanent aufgerufen wird, auch während die Tabelle schon längst erstellt ist, musste ich verhindern, das der Renderer jede Zelle mehrmals * -1 nehmen.
Das habe ich so gelöst:
Der Vector ist global deklariert und speichert die bereits geänderten Zellen der Tabelle in der Form
ZeileSpalte.
Leider ändert sich nichts an der Darstellung der Daten, beim Umschalten der Datenansicht.
Woran kann das liegen??
P.S.: Ich weis dass das Ganze nicht unbedingt die konventionelle Herangehensweise einer solchen Problematik ist, aber da die Anwendung fast fertig und sehr umfangreich ist, würde ich ungerne irgendetwas komplett ändern.
Gruß Flow25
in meiner Anwendung gibt es eine Tabelle mit Eurobeträgen. Nun habe ich eine Funktion eingebaut, mit der der User einstellen kann, ob die Erträge als Plus oder die Aufwände als Plus dargestellt werden soll.
Die Tabelle besitzt einen TableCellRenderer, den ich selbst implementiert habe. Sobald der Benutzer nun die Ansicht der Daten umschaltet, so wird der Tabelle ein anderer TableCellRenderer zugewiesen, in dem ich den Wert jedes Labels der Tabelle (jede Zelle) mal -1 nehme. Anschließend weise ich dem value diesen neuen Wert wieder zu.
Da der CellRenderer ja permanent aufgerufen wird, auch während die Tabelle schon längst erstellt ist, musste ich verhindern, das der Renderer jede Zelle mehrmals * -1 nehmen.
Das habe ich so gelöst:
Code:
if (column == 4 || column == 6 || column == 8 || column == 10)
{
label.setFont(new Font("Arial", Font.BOLD, 12));
if (!(zeilen.contains(String.valueOf(row) + String.valueOf(column))))
{
String w = String.valueOf(value);
StringBuffer wBuffer = new StringBuffer(w);
int pos;
while ((pos = wBuffer.indexOf(".")) != -1)
{
wBuffer.deleteCharAt(pos);
}
int kPos = wBuffer.indexOf(",");
wBuffer.setCharAt(kPos, '.');
String umgew = String.valueOf(wBuffer);
System.out.println("Wert = " + umgew);
double wert = Double.parseDouble(umgew);
wert = wert * -1;
value = String.valueOf(df2.format(wert));
System.out.println("Wert2 = " + String.valueOf(value));
zeilen.addElement(String.valueOf(row) + String.valueOf(column));
}
System.out.println(zeilen.size());
}
Der Vector ist global deklariert und speichert die bereits geänderten Zellen der Tabelle in der Form
ZeileSpalte.
Leider ändert sich nichts an der Darstellung der Daten, beim Umschalten der Datenansicht.
Woran kann das liegen??
P.S.: Ich weis dass das Ganze nicht unbedingt die konventionelle Herangehensweise einer solchen Problematik ist, aber da die Anwendung fast fertig und sehr umfangreich ist, würde ich ungerne irgendetwas komplett ändern.
Gruß Flow25