Swing JList, CellRenderer und Model

david.mkwe

Neues Mitglied
Hallo,

ich habe eine JList der ich im Konstruktor ein Model übergebe.
Dieses Model stellt mir meine Objekte (Animal), welche in der Liste angezeigt werden sollten, bereit.

Dazu habe ich einen eigenen CellRenderer (AnimalRenderer) welcher die wichtigsten Daten in einem JPanel darstellt. Dieses JPanel setzt sich aus mehreren JLabels (mit Text und Icons) zusammen.

Wenn der Benutzer ein bestimmtes JLabel (mit einem Löschen Icon) anclickt sollte das Element gelöscht werden. Jedoch besitzt das JPanel (mit einem Info Icon) noch ein weiteres JLabel welches auch klickbar sein sollte. Das zweite JLabel sollte genauere Informationen zum Tier in einem Dialog anzeigen.

Jetzt wollte ich wissen wie ich erkennen kann, welches dieser JLabels geklickt worden ist.

Freundliche Grüße
David Andlinger
 
Moin,

auch wenn ich nicht verstanden habe, warum Du es mit Label und nicht mit Button machst:

Weise mal jedem der Label einen eigenen ActionListener zu, das sollte reichen 😉

Gruß
Klaus
 
Moin,

auch wenn ich nicht verstanden habe, warum Du es mit Label und nicht mit Button machst:

Weise mal jedem der Label einen eigenen ActionListener zu, das sollte reichen 😉

Gruß
Klaus

JLabel kennt keine ActionListener, musst entweder ein JButton vewendenden oder dem JLabel einen MouseListener geben.
 
Hallo,

da wirst du dir etwas schwer tun.
Siehe: http://www.java-forum.org/awt-swing-swt/102014-jlist-jspinner.html

Eine JList ist für sowas einfach nicht konzipiert.
Der Renderer malt nur die Listeneinträge und stellt fest, ob diese markiert, nicht makiert oder den Fokus haben/nicht haben. Listener auf die einzelnen Komponenten in einem Listeneintrag kannst du also vergessen.
Evtl. könntest du noch versuchen anhand der Mausposition zu ermitteln, wo der Anwender in der Liste hingeklickt hat. Weiß allerdings nicht, ob das so ohne Probleme funktioniert.

Alternativen:
-> Baue die JList mit einem JScrollPane (in das du deine Panels legst) nach. Da es hier keinen Renderer gibt, funktionieren auch die Listeners.
-> JTabel - Wenn du noch nie mit einer JTabel was gemacht hast, wirst du dir bei dem, was du vor hast sehr schwer tun. Zumal ich bezweifle, daß man das mit einer JTabel optimal hinbekommt.

MfG
hansmueller
 

Neue Themen


Zurück
Oben