Swing Jlist - CellRenderer/ Selektion

Sich

Mitglied
Guten Morgen alle zusammen,

ich versuche gerade eine JList (Swing) meinen Bedürfnissen anzupassen.
Sie soll eine art Benutzer Liste mit Namen und Avatar verwalten. Das habe ich auch via eines eigenen CellRenderers implementiert.
Jetzt das Problem folgendes: zum Einen möchte ich gerne einen MouseOver- (bzw Rollover-) Effekt zu den Listeneinträgen. Das in der Art, dass zb. der Zellenhintergrund ne andere Farbe bekommt, wenn ich mit der Maus drüber bin..
Zum Anderen soll bei einem Klick auf einen Benutzer kein Focus gesetzt werden, (beim Verlassen der JList mit der Maus soll dem entsprechend auch jeder Eintrag visuell ohne Selektion oder Fokus sein).

Hat da jemand einen Ansatz für mich. Ich hatte bereits versucht den MousOver-Effekt mittels MouseMoved hinzubekommen.. aber hat nicht so geklappt wie erwartet..
Und im Renderer hatte ich es zum Testen so drinne:
Java:
		Point point = list.getMousePosition();
		int mouseOver = point == null ? -1 : list.locationToIndex(point);
		setBackground(index == mouseOver ? Color.GREEN : Color.WHITE);
Hat aber auch nicht geklappt.


Vielen Dank schonmal!

Gruß
Sich
 
Wie schon richtig erkannt ist ein CellRenderer für die Darstellung der Listeneinträge zuständig, wenn nicht gerade den DefaultListCellRenderer verwendest bzw. dessen super Methode aufrufst sollte zunächst mal kein Eintrag als selektiert bzw. focusiert dargestellt werden.

Den MouseOver Effekt musst Du mittels Mouse(Motion)Listener an der JList realisieren. Ermitteln über welchem Eintrag (Index) sich die Maus befindet. Entweder das Listenelement "markieren" oder den Index dem Renderer zur Verfügung stellen und ein Neuzeichnen der JList anfordern. Im Renderer dann die Markierung überprüfen bzw. den Index vergleichen.
 
Vielen Dank für deinen Ansatz!

Genau so habe ich es jetzt umgesetzt und es klappt bestens. Ich hatte zu Anfang in der Tat den DefaultListCellRenderer beerbt.

Nochmals Danke und nöch nen schönen Abend.
Sich
 

Neue Themen


Zurück
Oben