Hi
ich habe eine JComboBox mit eigenem ListCellRenderer, der die Elemente (String) abhängig von einer geg. Bedingung in kursiv darstellen soll.
Das funktioniert auch perfekt für die Dropdown-Liste. Aber wie bekomme ich es hin, dass die Schrift auch unter der gleichen Bedingung in der "Kopfzeile" auf kursiv gesetzt wird? Wenn ich das richtig verstanden habe, wird ja dieses Element auch über den ListCellRenderer gerendert, falls ComboBox.isEditable == false ist. Das ist sie bei mir. Aber der Renderer ändert am ausgewählten Item nichts...
Hier mein Code vom CellRenderer:
ich habe eine JComboBox mit eigenem ListCellRenderer, der die Elemente (String) abhängig von einer geg. Bedingung in kursiv darstellen soll.
Das funktioniert auch perfekt für die Dropdown-Liste. Aber wie bekomme ich es hin, dass die Schrift auch unter der gleichen Bedingung in der "Kopfzeile" auf kursiv gesetzt wird? Wenn ich das richtig verstanden habe, wird ja dieses Element auch über den ListCellRenderer gerendert, falls ComboBox.isEditable == false ist. Das ist sie bei mir. Aber der Renderer ändert am ausgewählten Item nichts...
Hier mein Code vom CellRenderer:
Java:
import java.awt.Component;
import java.awt.Font;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.ListCellRenderer;
@SuppressWarnings("serial")
public class FormatComboBoxRenderer extends JLabel implements ListCellRenderer {
public FormatComboBoxRenderer() {
setOpaque(true);
}
@Override
public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected,
boolean cellHasFocus) {
if (isSelected) {
setBackground(list.getSelectionBackground());
setForeground(list.getSelectionForeground());
} else {
setBackground(list.getBackground());
setForeground(list.getForeground());
}
setText(value.toString());
if (!bedingung) {
setFont(list.getFont().deriveFont(Font.ITALIC));
} else {
setFont(list.getFont());
}
return this;
}
}