JComboBox jedes Item mit einer anderen Farbe

delphiking1980

Bekanntes Mitglied
Hallo,

ich habe eine JTable diese bekommt als DefaultTableCellRenderer eine JComboBox.
Nun zu meinem Problem wenn ich die JComboBox so erstelle :

Java:
private JComboBox getSchriftFarbeCmbBox(){
		Color[] schriftFarbeList = new Color[]{Color.BLACK,Color.WHITE,Color.BLUE};
		JComboBox cb = new JComboBox(schriftFarbeList);
		cb.setRenderer(new DefaultListCellRenderer(){

			@Override
			public Component getListCellRendererComponent(JList list,
					Object value, int index, boolean isSelected,
					boolean cellHasFocus) {
				 Color color = (Color )value;

				 setText(String.valueOf(color.getRGB()));
		         setBackground(color);
		         setForeground(color);
		         this.setPreferredSize(new Dimension(10,15));
		         return this;
			}

		});
		return cb;
	}

dann wird mir zwar das erstellt nur leider erscheint in der Tabelle dann nicht ein Farbwert sondern der Vollqualifizierte Name der Color Klasse.

Rückgabewert soll die Farbe als String sein zbsp. "weiß" "rot" usw.
das würde ich ja mit einer IF ELSE Abfrage erledigen aber wie gebe ich einen wert zurück an die Tabelle ?

Danke für jede hilfe.
 
Tu alle Werte in eine Hashtable/HashMap, mit Key: Color und Value: String, dann änderst du
Java:
setText(String.valueOf(color.getRGB()));[/Java] in [code=Java]setText(hashtable.get(color.getRGB()));[/Java]
 
das habe ich in der zwischenzei schon von selber erledigt das funzt auch nur ich bekomme jetzt immer noch den gleichen text.

Ich denke mal das wird wohl daran liegen das ich ein Color Objekt zurück bekomme und kein Label.

Java:
private JComboBox getSchriftFarbeCmbBox(){
		final HashMap<Color,String> farbeMap = new HashMap<Color,String>();
		farbeMap.put(Color.BLACK,"schwarz");
		farbeMap.put(Color.WHITE,"weiss");
		farbeMap.put(Color.BLUE,"blau");

		Iterator<Entry<Color, String>> it = farbeMap.entrySet().iterator();
		ArrayList<Color> farbeArrayList = new ArrayList<Color>();
		while(it.hasNext()){
			Entry<Color, String> entry = it.next();
			farbeArrayList.add(entry.getKey());
		}

		Object[] colorArr = farbeArrayList.toArray();

		JComboBox cb = new JComboBox(colorArr);
		cb.setRenderer(new DefaultListCellRenderer(){

			@Override
			public Component getListCellRendererComponent(JList list,
					Object value, int index, boolean isSelected,
					boolean cellHasFocus) {
				 Color color = (Color )value;
				 setText(farbeMap.get(value));
		         setBackground(color);
		         setForeground(Color.RED);
		         this.setPreferredSize(new Dimension(10,15));
		         return this;
			}

		});
		return cb;
	}
 
Zuletzt bearbeitet:
Java:
private JComboBox getSchriftFarbeCmbBox(){
		final HashMap<String,Color> farbeMap = new HashMap<String,Color>();
		farbeMap.put("schwarz",Color.BLACK);
		farbeMap.put("weiss",Color.WHITE);
		farbeMap.put("blau",Color.BLUE);

		Iterator<Entry<String, Color>> it = farbeMap.entrySet().iterator();
		ArrayList<String> farbeArrayList = new ArrayList<String>();
		while(it.hasNext()){
			Entry<String, Color> entry = it.next();
			farbeArrayList.add(entry.getKey());
		}

		Object[] colorArr = farbeArrayList.toArray();

		JComboBox cb = new JComboBox(colorArr);
		cb.setRenderer(new DefaultListCellRenderer(){

			@Override
			public Component getListCellRendererComponent(JList list,
					Object value, int index, boolean isSelected,
					boolean cellHasFocus) {
				 Color color = farbeMap.get(value);
				 setText(String.valueOf(value));
		         setBackground(color);
		         setForeground(Color.RED);
		         this.setPreferredSize(new Dimension(10,15));
		         return this;
			}

		});
		return cb;
	}
 

Neue Themen


Zurück
Oben