Verknüpfung Gui -> Datenquelle

Paddycaster

Mitglied
Hallo zusammen,

ich brauche mal wieder einen kleinen Denkanstoß ;-). Einen Titel zu finden ist bei meinem Problem gerade schon schwer.

Ich hoffe, meine Beschreibung reicht aus.

Ich bastel gerade an einer Software, die Werte verarbeitet und darstellt.
Jeder Wert ist als Objekt vorhanden und beinhaltet eine Bezeichnung (String) und zwei Values (jeweils Double).
Die Objekte werden dann in eine ArrayList gespeichert.

Die Darstellung erfolgt als JTable. Funktioniert auch alles.

Die Values sollen sich nun periodisch verändern.

Dazu habe ich eine weitere ArrayList erstellt, welche die ArrayList mit den Objekten spiegelt. Gespeichert werden hier aber andere Values, nämlich die Werte der periodischen Veränderung. Die in der Liste gespeicherten Objekte sind aber vom selben Typ wie oben.

Das klappt auch alles.
Nun kommt aber die Umsetzung in der Gui und das Problem beginnt.

Ich habe also die Gui mit der Tabelle. Meine Idee ist, über die Rechte Maustaste ein Subfenster zu aktiveren, in welchem ich die Werte der Veränderung anzeigt werden und selektierbar sind.

Umgesetzt habe ich das nun so, dass pro Objekt in der gespiegelten ArrayList, ein gerahmtes (TitledBorder) JTextField erstellt wird. In dem Rahmen wird dann die Bezeichnung aus dem Objekt angezeigt und in dem TextField der aktuelle Wert der periodischen Veränderung.
Die TextFields landen als Objekte in einem Array. In den einzelnen Objekten wird dann das TextField und der Index des ursprünglichen Werteobjektes aus der zweiten Liste gespeichert. Über den Index wollte ich eigentlich die Verknüpfung zwischen den Textfeldern und den Ursprungsdaten/Objekten herstellen.

Nun aber ändert der User einen Wert und ich finde keinen "Angriffspunkt", wo ich aus der Gui den Index des veränderten Feldes zurückbekomme?

Geht das so nicht, oder komme ich einfach nur nicht drauf?

Vielen Dank schonmal
 

Neumi5694

Top Contributor
"Index des veränderten Feldes"
Ist das nicht das Feld, dessen Wert du beim Rechtsklick in das Popup geladen hast?
Die Tabelle bietet hier rowAtPoint an.
Vergiss nicht, dass eine Tabelle umsortiert sein kann, deshalb vorsichtshalber noch mit convertRowIndexToModel korrigieren.

Wenn du allerdings erst nach mehreren Editiervorgängen darauf zugreifen willst, geht das so nicht. Dann musst du beide Datenmodelle (Original und Arbeitskopie) miteinander vergleichen.
 

Paddycaster

Mitglied
Vielen Dank Neumi5694,

Ich arbeite bei dem Popup aber gar nicht mit der JTable. Das wäre natürlich einfacher, aber aus Designgründen sollen in das Popup die TextFields. Außerdem will ich nicht einsehen, dass ich meinen Plan an das anpasse, was ich schon kann😏

Ich muss eine Möglichkeit finden, die durch eine Schleife erzeugten und nicht konkret benannten TextFields identifizieren können. Wenn ich die TextFields vorher bestimme und benenne, bekomme ich das hin. Aber ohne konkrete Benennung fehlt mir der Ansatz.
 

Neumi5694

Top Contributor
AH, dann hab ich das falsch verstanden. Du kriegst beim Aufruf des Popups ja auch eine Instanz des Invokers.
Dann musst du nur noch prüfen, welchen Index der in deiner Liste hat.
 

Paddycaster

Mitglied
OK, nochmals vielen Dank für die Antworten und die Mühe.
Ich habe das Problem nun, um einfach erstmal etwas nutzbares fertig zu haben, vorübergehend mit einer JTable umschifft. Das was ich eigentlich nicht wollte ;-) Aber es ist erstmal brauchbar.
Das mit dem Invoker kenne ich noch nicht.
Sobald alles in einer ersten Version läuft, baue ich das Popup nochmal in Ruhe um. Da scheine ich ja noch einiges dran lernen zu können. Vor allem weil mir ein solches Problem nicht zum ersten Mal begegnet.
 

Ähnliche Java Themen

Neue Themen


Oben