Zwei Listen


hippokeng

Grünschnabel
Halleluja!

Die Ausgangslage:
Auf der ContentPane eines Frames habe ich ein GridBagLayout installiert. U.a. enthält dieses zwei Felder:

Feld 1: Eine ScrollPane mit einer Liste mit 200 Elementen (Strings); momantan nur 2.
Feld 2: Eine ScrollPane mit einem TableModel (s. screenshot). Zu jedem String in Feld 1 gehört eine andere Tabelle in Feld 2.

Das Problem:
Wenn ich nun in Feld 1 Element 27 selektiere -- dessen Nummer in der Liste kenne ich dann --, wie schaffe ich es dann, dass auch die zugehörige Tabelle 27 in Feld 2 eingeblendet wird? Benötige ich bei n Listenelementen auch jeweils n verschiedene Panel für die Listen?

Vielen Dank, hippokeng.
 

Anhänge

zerix

Hausmeister
Moderator
Hallo,

ohne komplett verstanden zu haben was du wo anzeigen möchtest, versuche ich dennoch mal zu helfen.

Du brauchst halt einen Listener der auf das Selektieren des ersten Eintrages reagiert. Damit kannst du dir dann das Element nehmen, was selektiert ist, wenn es selektiert wird. Damit kannst du dann die weiteren Daten abfragen (wo auch immer) und diese in der zweiten Liste anzeigen.

Ich weiß nicht warum du n verschiedene Panels haben möchtest. In der zweiten Liste kannst du kannst du ja immer die nötigen Daten anzeigen, das heißt du änderst praktisch immer das Model der Liste bzw die Daten des Models.

Ich hoffe das hilft etwas oder ich habe dein Problem noch weniger verstanden als ich dachte. :)

Viele Grüße
Sascha
 

hippokeng

Grünschnabel
Lieber Sascha,

vielen Dank für Deinen Versuch zu helfen. Vermutlich mache ich auch einiges richtig, nur die Reihenfolge stimmt offenbar noch nicht.

Den ersten Teil hast Du richtig verstanden: Den Listener habe ich installiert und erhalte nach Selektion der Liste Nr. 27 in Feld 1 eben besagte Nummer 27 -- oder halt 26 wegen des Feldbeginns bei 0. Jetzt der zweite Teil.

Du schreibst, ich solle die Daten des Models ändern. Aber wie? Um das Bild, welches Du auf dem screenshot siehst, initial anzeigen zu können, habe ich das gesamte GridbagLayout an ein Panel geflanscht und rufe eine Instanz dieser Panel-Klasse von außen auf, und zwar defaultmäßig mit den Daten der 0.ten Datei. Dabei werden die Daten dieser Datei auch in das TableModel für Liste 2 eingelesen. IN dieser Instanz SELBST habe ich dann den Listener installiert, und erhalte dort, nach Selektion der Liste in Feld 1, besagte Nr. 27.

Soll ich diese Nummer jetzt nach außen exportieren, dort das Modell mit den Daten der 27. Datei beschicken und von außen eine weitere Instanz dieses Panels aufrufen? Ich weiß halt nicht, wie ich das Table Modell IN der alten Panel-Instanz erneut mit den neuen Listendaten füttern kann, nachdem es einmal angelegt habe.

Ich hoffe, nun ist mein Problem verständlicher. Wenn nicht, muß ich mich noch klarer auszudrücken versuchen.

Vielen Dank und viele Grüße
hippokeng
 

Neue Beiträge