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
Der eingeschobene Block
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?
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?