JList ScrollPane

moemaster

Erfahrenes Mitglied
Moin Moin,
ich habe eine JList in einem JScrollPane mittels String-Array mit Namen gefüllt. Im JScrollPane sind 5 Namen sichtbar, ohne zu scrollen. Nun möchte ich es realisieren, dass wenn man auf einen der Namen klickt/auswählt, rechts neben dem JScrollPane/JList, auf Höhe des Namens ein Button erscheint, mit dem man weitere Informationen zu diesem Namen abrufen kann. Hierfür müsste man irgendwie die Y-Position des in der JList im JScrollPane selektierten Namens herausfinden - woran ich leider scheitere. Ich hoffe ich habe mich einigermaßen verständlich ausgedrückt und bin wirklich für jede Hilfe dankbar ;) Komme an dieser Stelle echt nicht weiter...
Beste Grüße aus Hamburg,
Moe
 
Moin,

wenn ich Dich richtig verstehe, brauchst nur den selektierten Index/die selektierten Indices der JList auswerten!

getSelectedIndex resp. getSelectedIndices

Gruß
Klaus
 
Also, wenn ich mir die API anschaue würde ich sagen:

Code:
Rectangle getCellBounds(int index0, int index1) 
          Returns the bounds of the specified range of items in JList coordinates.

oder

Code:
indexToLocation
public Point indexToLocation(int index)Returns the origin of the specified item in JList coordinates. Returns null if index isn't valid. 

Parameters:
index - the index of the JList cell 
Returns:
the origin of the index'th cell

Angaben ohne Gewähr ;)
 
Zuletzt bearbeitet:
Das ist schon nicht schlecht, funktioniert auch für die ersten 5 Einträge der JList. ABER:
Es ist ja so: Im anfangs sichtbaren Bereich sind 5 Einträge in der JList. Der 1. Eintrag hat logischerweise die Y-Koordinate 0, der 2. 18, der 3. 36, der 4. 54 und der 5. 72. Wenn man nun um einen Eintrag weiter nach unten scrollt hat DIE SECHSTE allerdings nicht den Wert 72, sondern 90. Sprich - der Button, den ich neben den Eintrag platzieren wollte, landet nun unter der JList. Ich weiß nicht, ob man das als außenstehender so wirklich nachvollziehen kann, was ich hier schreibe :D Aber es läuft letztendlich darauf hinaus: Man kann nicht über die Koordinaten in der JList gehen, sondern muss irgendwie nachvollziehen können, welche Y-Koordinaten der selektierte Eintrag im JSCROLLPANE hat.
 
Moin,

hmm, also so ganz verstehe ich das Problem noch immer nicht .... :(

Wenn Du in JList auf einen Eintrag klickt, weißt Du doch implizit, welcher Eintrag dies ist und kannst mit einem entsprechenden Listener reagieren, oder ?

Wozu brauchst Du denn die genauen Koordinaten innerhalb der Liste :confused:

Gruß
Klaus
 
:D Wie gesagt, mir ist schon bewusst, dass das relativ schwierig zu verstehen ist... ok ich versuch's nochmal:
Ich habe eine JList in einem JScrollPane mit Namen:

Hans
Dieter
Helmut
Bernd
Heinrich
Helga
Peter
Sieglinde
Vera

^^ So ungefähr ;) Wenn ich nun beispielsweise auf "Bernd" klicke, soll direkt neben diesem Eintrag ein Button sichtbar werden (damit dieser auf der gleichen Höhe ist, brauche ich eben die Y-Koordiante):

Hans
Dieter
Helmut
Bernd...................|Button|
Heinrich
Helga
Peter
Sieglinde
Vera

Vestehst?
 
Was ist, wenn du den Button IN die JList setzt, sprich zu dem Eintrag gehörig? Ich glaube zumindest zu wissen, wie das geht ^^

Aber was folgendes betrifft...

Das ist schon nicht schlecht, funktioniert auch für die ersten 5 Einträge der JList. ABER:
Es ist ja so: Im anfangs sichtbaren Bereich sind 5 Einträge in der JList. Der 1. Eintrag hat logischerweise die Y-Koordinate 0, der 2. 18, der 3. 36, der 4. 54 und der 5. 72. Wenn man nun um einen Eintrag weiter nach unten scrollt hat DIE SECHSTE allerdings nicht den Wert 72, sondern 90. Sprich - der Button, den ich neben den Eintrag platzieren wollte, landet nun unter der JList. Ich weiß nicht, ob man das als außenstehender so wirklich nachvollziehen kann, was ich hier schreibe Aber es läuft letztendlich darauf hinaus: Man kann nicht über die Koordinaten in der JList gehen, sondern muss irgendwie nachvollziehen können, welche Y-Koordinaten der selektierte Eintrag im JSCROLLPANE hat.

...gibt es noch die Möglichkeit von...

Code:
int getFirstVisibleIndex() 
          Returns the index of the first visible cell.

...und eventuell noch...

Code:
int getFixedCellHeight() 
          Returns the fixed cell height value -- the value specified by setting the fixedCellHeight property, rather than that calculated from the list elements.

...dazu.
 
Zuletzt bearbeitet:
Zurück