Eigener ListCellRenderer - Einträge werden nicht als selektiert angezeigt

mki_germo

Erfahrenes Mitglied
Hallo,

ich habe einer JXList einen eigenen ListCellRenderer zugewiesen. Der Renderer selber funktioniert auch, allerdings werden in der JXList Einträge, die ich selektiere nicht markiert.

Anbei mal der verwendete Source

Java:
package de.germo.gco21c.mapping.gui;

import java.awt.Color;
import java.awt.Component;
import java.awt.FlowLayout;

import javax.swing.ImageIcon;
import javax.swing.JList;
import javax.swing.ListCellRenderer;

import org.jdesktop.swingx.JXLabel;
import org.jdesktop.swingx.JXPanel;

import de.germo.gco21c.mapping.model.VariableMapping;

/**
 * 
 * @author MKI
 * @version 1.0
 */
public class SeachResultMappingListRenderer implements ListCellRenderer {

	/**
	 * @see javax.swing.ListCellRenderer#getListCellRendererComponent(javax.swing.JList, java.lang.Object, int, boolean, boolean)
	 */
	@Override
	public Component getListCellRendererComponent(JList list, Object value,
			int index, boolean isSelected, boolean cellHasFocus) {
		
		VariableMapping varMap = (VariableMapping) value;
		JXPanel pnl = new JXPanel();
		pnl.setLayout(new FlowLayout(FlowLayout.LEFT, 5, 1));
		
		JXLabel lbl1 = new JXLabel(varMap.getIsNeuVar().getVariableName());			
		JXLabel lbl2 = new JXLabel("");			
		lbl2.setIcon(new ImageIcon("res/goto.gif"));
		JXLabel lbl3 = new JXLabel(varMap.getIskv21cVar().getVariableName());
		
		
		pnl.add(lbl1);
		pnl.add(lbl2);
		pnl.add(lbl3);
		
		
		//Zelle selektiert?
		if (isSelected) {
			Color col = new JList().getSelectionBackground();	//TODO: nur Test, die Farbe ergibt sich später aus list.get.getSelectionBackground();
			System.out.println(col);
			pnl.setBackground(col);
			lbl1.setBackground(col);
			lbl2.setBackground(col);
			lbl3.setBackground(col);
			System.out.println("sel: " + index);
		}
		
		
		return pnl;
	}

	

}

Der eingeschobene Block

Code:
if (isSelected) {
			Color col = new JList().getSelectionBackground();	//TODO: nur Test, die Farbe ergibt sich später aus list.get.getSelectionBackground();
			System.out.println(col);
			pnl.setBackground(col);
			lbl1.setBackground(col);
			lbl2.setBackground(col);
			lbl3.setBackground(col);
			System.out.println("sel: " + index);
		}

bewirkt dabei keine Änderung des Verhaltens, egal ob er nun drinn ist oder nicht. Probeweise habe ich auch einmal eine JList anstatt einer JXList verwendet - das Resultat blieb das selbe.

Jemand eine Idee, woran das liegen könnte?
 
Hey,

habs gerade nur mal überflogen aber versuchs mal mit : revalidate; und repaint;
Ich denke mal der aktualisiert das nicht.

Gruß
 
Zurück