Deaktivieren einzelner JComboBox-Elemente
Dies ist ein ziemlich häufiges Problem, und die von mir verwendete Lösung ähnelt derwas ich gesucht habe und später gefunden. Man setzt einListCellRenderer
mit einerJLabel
das aktiviert oder deaktiviert sich basierend auf dem aktuell ausgewählten Index:
public Component getListCellRendererComponent(JList list, Object value,
int index, boolean isSelected, boolean cellHasFocus) {
setText(value.toString());
UIDefaults defaults = UIManager.getDefaults();
Color fc;
if (index == 1) {
setEnabled(false);
fc = defaults.getColor("Label.disabledForeground");
setFocusable(false);
} else {
// fc = defaults.getColor("Label.foreground");
fc = list.getForeground();
setEnabled(list.isEnabled());
setFocusable(true);
}
setForeground(fc);
setBackground(isSelected ? list.getSelectionBackground() : list
.getBackground());
return this;
}
Das Problem ist, dass das Listenelement, obwohl es optisch als deaktiviert angezeigt wird, trotz der Option ausgewählt werden kannsetFocusable
Anruf. Wie deaktiviere ich es eigentlich?