不可编辑的JComboBox中所选项目的背景颜色是一种蓝色:
有没有办法让它变成不同的颜色,例如白色?
答案 0 :(得分:9)
这应该有效
jComboBox1.setRenderer(new DefaultListCellRenderer() {
@Override
public void paint(Graphics g) {
setBackground(Color.WHITE);
setForeground(Color.BLACK);
super.paint(g);
}
});
答案 1 :(得分:6)
渲染器指定的背景将被组合框弹出窗口中使用的JList的选择背景颜色覆盖。查看BasicComboBoxUI类的“paintCurrentValue”方法。所以解决方法是:
JComboBox comboBox = new JComboBox(...);
Object child = comboBox.getAccessibleContext().getAccessibleChild(0);
BasicComboPopup popup = (BasicComboPopup)child;
JList list = popup.getList();
list.setSelectionBackground(Color.RED);
这也会影响弹出窗口的渲染。如果您不希望它影响弹出窗口,则需要创建自定义渲染器以专门设置所选项目的背景。
答案 2 :(得分:3)
您是否尝试过编写自己的自定义ListCellRenderer
?
当要求该方法提供单元格渲染组件时,您将获得以下参数:
public Component getListCellRendererComponent(JList list,
Object value,
int index,
boolean isSelected,
boolean cellHasFocus) {