farbige Items in JCombobox

Dadu2006

Grünschnabel
Hallo Leute,

Ich habe eine Jtable mit integrieter JCombobox in den Zellen..
nun würde ich gerne beim Öffnen der Combox die Daten unterschiedlich farbig machen - beim Auswählen des gewünchten Inhalts wird die Combobox geschlossen und der Zellenhintergrund in der JTable farbig markiert.

Würde mich über Tipps freuen

Gruss
 
Hallo.

Schau dir mal den ListcellRenderer an. Die Methode
getListCellRendererComponent musst du überschreiben und dabei kannst du zB Jlabel wiedergeben, welchen du dann über setBackground eine andere Farbe mitgeben kannst.
 
Hi Danke für deine schnelle Antwort..
Leider kann ich so nur den Hintergrund der Items in der Combobox ändern..
Jetzt hänge ich die Combobox an nen Actionlistener und möchte bei Auswahl eines farbigen Eintrages in der Combobox die Zelle in der gleichen Farbe ändern...:confused: :confused:
evtl mit nem jtable.getTableCellRendererComponent?
 
Zuletzt bearbeitet:
also...
Die Combobox beinhaltet sämtliche Einträge die farblich hinterlegt sind...
je nach ausgwähltem Eintrag ändert sich die Zellenfarbe der Tabelle in der sich die Combobox befindet..
grüße


also hier ist die CB die ich benutze

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Test3 extends JFrame {
public Test3() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Container content = getContentPane();
Object[] data = { new ColoredObject(Color.RED,"Hello"),
new ColoredObject(Color.BLUE,"World,"),
new ColoredObject(Color.CYAN,"These"),
new ColoredObject(Color.GREEN,"Are"),
new ColoredObject(Color.MAGENTA,"Some"),
new ColoredObject(Color.ORANGE,"Colors")
};
JComboBox jcb = new JComboBox(data);
jcb.setRenderer(new ColoredRenderer());
content.add(jcb, BorderLayout.NORTH);
setSize(300, 300);
setVisible(true);
}
public static void main(String[] arghs) { new Test3(); }
}
class ColoredObject {
Color color;
Object object;
public ColoredObject(Color color, Object object) {
this.color=color;
this.object=object;
}
public Object getObject() { return object; }
public Color getColor() { return color; }
public String toString() { return object.toString(); }
}
class ColoredRenderer extends DefaultListCellRenderer {
public Component getListCellRendererComponent(JList list, Object value,
int index, boolean isSelected,
boolean hasFocus) {
Component c = super.getListCellRendererComponent(list, value, index,
isSelected,hasFocus);
if (!isSelected && !hasFocus && value instanceof ColoredObject) {
c.setBackground(((ColoredObject)value).getColor());
}
return c;
}
}



diese ist in einer spalte der JTable integriert...
 
Zuletzt bearbeitet:
Zurück