JTable alten wert zurückbekommen

mistirios

Mitglied
Hi,

und zwar habe ich eine JTable, die ich mit Datensätzen aus einer DB fülle. Jetzt habe ich folgendes Problem. Wenn ich eine Änderung an meiner Tabelle habe, wird mittels dem TablemodelListener immer eine update prozedur aufgerufen, die dann mein Datensatz in der DB aktualisiert.

Jetzt habe ich aber das Problem, dass wenn ich eine Exception bekomme, den alten Wert nicht mehr habe. Denn brauche ich aber, damit ich dann in meiner GUI mit setValueAt den neuen Wert, auf den alten Wert wieder zurückschreibe.

Hat einer einen Rat, wie ich an den alten Wert rankomme?

mfg
 
Hallo,

da hast du in der tat ein Problem, den alten wert bekommst du über den TableModelListener
natürlich nicht ! Es gäbe die Möglichkeit sich in den CellEditor einzuklinken der bekommt
immer den alten Wert übergeben ... ABER ...

Ich denke du solltest dein Konzept für das Updaten der Daten deiner Datenbank überdenken !

Das Event liefert die Zeile deines Models in dem die Änderung stattgefunden hat, so sollte es Dir möglich sein den Datensatz lieber über einen Primärschlüssel zu identifizieren und nicht über den alten Wert !

Gruß JAdix
 
Durch die ganze Sache mit dem TableModel auf der JTable und dem CellEditor usw stehe ich zwar auch noch nicht ganz 100%ig durch aber:

Kannst du nicht einfach einen MouseListener auf die JTable hängen und den angeklickten Wert in einer Variable speichern sobald in die Zelle geklickt wird? So könntest du den Wert in die Position zurückschreiben falls ein Fehler auftritt.

Entschuldigt wenn ich mich total irre ;)
 
Guten Morgen,
Meine Idee dazu heißt : Interne DatenStruktur!
Da es sich bei einem JTabel eigentlich um ein reines Anzeigewerkzeug handelt würde ich vorschlagen du haeltst dir die Daten in einer internen Datenstruktur vor, und befüllst die Tabelle dann via Tablemodel aus der Struktur herraus. Und dann ist es sicherlich auch kein problem, die alten Werte irgendwie zwischenzuspeichern.

Hoffe das hilft.

Gruß Gora
 
Vielen Dank für die Hilfe.

@Klein0r bei mir ist das zur Zeit so implementiert. Aber anscheinend ist der MouseListener nicht zuverlässig.

Manchmal initialisiert er mir die Variablen nicht richtig. Und da ich nicht drauf hoffen kann das der MouseListener meine Variablen richtig initialisiert, wollte ich halt einen anderen Weg gehen.

@gora
Ja wollte das eigentlich vermeiden mit der Datenstruktur..
 
Das wäre aber sauberer! ^^

Okay wer auf "quick and dirty" steht bitte. Aber nach MVC-Pattern müsste man strenggenommen die interne Datenstruktur haben.

:)
 
Was heißt das er nicht zuverlässig arbeitet? Entweder es funktioniert oder es funktioniert nicht... Nen Programm hat doch keine Entscheidungsmacht ;)

Wird er einfach manchmal aufgerufen und manchmal nicht oder wie stelle ich mir das vor?
 
@KleinOr

manchmal initialisiert der mir die Variablen mit 0 werten.. Weiss auch nicht wieso.. Die Variablen sind ja global in meiner Klasse deklariert..
 
Hallo,

darf man Fragen aus welchen Spalten deine Tabelle und ein zugehöriger Datensatz der
Datenbankabfrage zusammengesetzt sind und was für Daten aus welche(r/n) Spalte/n
es sind die du dort updaten willst ? Und um wieviele Datensätze es dort geht ?

Gruß JAdix


.
 
Zurück