JComboBox: Erscheinung der Selektion verändern

Guadrion

Mitglied
Also folgendes Problem.
Ich hab mir eine JComboBox mit eigenem Renderer geschrieben, der mit den Hintergrund der Zelle entsprechend des Color-Wertes in dieser Zelle anmalt. Das klappt alles wunderbar. Ich hätte noch gerne, dass wenn ich die ColorComboBox geschlossen hab, der Hintergrund des selektierten wertes auhc entsprechend gefärbt ist. Das ist nämlich nicht der Fall -.-

Wisst ihr wie das hinbekomme?

VG
Guadrion

Code:
private class JColorListRenderer extends JLabel implements
				ListCellRenderer {

			@Override
			public Component getListCellRendererComponent(JList list,
					Object value, int index, boolean isSelected,
					boolean cellHasFocus) {
				setOpaque(true);
				Color c = (Color) value;
				if (isSelected) {
					setBackground(c);
					setForeground(Color.BLACK);
					setBorder(new LineBorder(Color.BLACK, 3, true));
				} else {
					setBackground(c);
					setForeground(Color.BLACK);
					setBorder(null);
				}
				setText("[" + c.getRed() + "," + c.getGreen() + ","
						+ c.getBlue() + "]");
				return this;
			}
		}
}
 
Zuletzt bearbeitet:
Hi!
Überschreibe mal die Methode getBackground in deinem Renderer, und gib da die Farbe zurück:

Code:
@Override
        public Component getListCellRendererComponent(JList list,
                Object value, int index, boolean isSelected,
                boolean cellHasFocus) {
            setOpaque(true);

            Color c = (Color) value;
            if (isSelected) {
                setBackground(c);
                setForeground(Color.BLACK);
                setBorder(new LineBorder(Color.BLACK, 3, true));
            } else {
                setBackground(c);
                setForeground(Color.BLACK);
                setBorder(null);
            }
            savedIndex = index;
           setText("[" + c.getRed() + "," + c.getGreen() + ","
             + c.getBlue() + "]");
           return this;
        }

        @Override
        public Color getBackground() {
           //savedIndex >= 0, dann Popup geöffnet 
           if (savedIndex >= 0) {
               return super.getBackground();
            } else {
               //Popup geschlossen, gebe Farbe für das selektierte Item zurück
              return Color.RED;
            }
        }

*grüssle*
 
Zurück