Отключение отдельных элементов JComboBox
Это довольно распространенная проблема, и используемое мной решение аналогичночто я искал и нашел позже. Один реализуетListCellRenderer
сJLabel
который включает или отключает себя на основе текущего выбранного индекса:
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;
}
Проблема в том, что, хотя визуально элемент списка отображается как отключенный, его все равно можно выбрать, несмотря наsetFocusable
вызов.
Как мне на самом деле отключить его?