Eine art StateChange bei einem JPanel

elmato

Erfahrenes Mitglied
Aloha Leute,
hier bin ich mal wieder nachdem ich ja (mal wieder :-) ) länger abwesend war..
Ich habe folgendes Problem und mir fällt selber keine gescheite Lösung dafür ein.
Ich habe ein(eigentlich mehrer) Jpanels die als Eingabemasken dienen also jede menge TextFelder Checkboxen etc. Da das ganze ein DB GUI ist kommt es vor das schon bestehende Datensätze in einer der besagten Masken dargestellt werden.
Nun möchte ich wissen wann den etwas in der Maske verändert wurde um den Benutzer zu Fragen zu können ob er den geänderten Datensatz speichern möchte. Und hier hänge ich, meine Lösungsideen waren:

boolean isSafe = true;
Panel erfragt beim öffnen den Focus, wenn es ihn verliert isSafe = false, ist doof da ja die Daten nicht geändert worden sein müssen.
Jeder Componente einen Listener verpassen(z.B. TextFeldern ein keylistener, Checkboxen ein ItemSateChangeListener etc) auch doof, ich will doch keine 50 Listener haben

SystemEventQueue dort abfragen ob eine Taste gedrückt wurde und welche Componente das Event generiert hat, klingt ganz gut, habe ich leider nur nicht so ganz hinbekommen, auch weiß ich nicht ob man den EventQueue für so was „missbrauchen“ sollte..


Tja soweit meine Gedanken, vielleicht hat ja einer von euch DIE Idee auf die ich mal wieder nicht komme ?

Vielen Dank im Voraus und ab jetzt dürften wir uns auch wieder öfter hören ..
 
Vielen Dank das Klingt schonmal interessant, ich schau mir das aufjedenfall mal an. Trotzdem würde mich mal interessieren wie man sowas theoretisch selber umsetzeen könnte, wenn das den Rahmen nicht sprengt..

mfg
elmato
 
Das hatte ich mir auch überlegt, bin dann aber wieder auf das Problem gestossen wann ich die methode setChanged() und notifyObservers() aufrufen muss/soll, da das ja im Prinziep bei jedem TextFeld/Checkbox etc passieren muss, ok ich könnte von JTextField z.B. ableiten und die Methode setText() überschreiben das sie die Observer benachrichtigt, hatte mir das selbe mit propertyChanges überlegt, aber da werden dann doch in meinen Augen unnötig viele Events abgefeuert... trotzdem schau ich mir das auch nochmal an..
 
Zurück