4
這是一個相當常見的問題,我使用的解決方案類似於what I searched,稍後會發現。一個實現了JLabel
啓用或禁用本身基於當前選擇的指數ListCellRenderer
:禁用單個JComboBox項目
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
呼叫選擇。 我該如何真正禁用它?