要更改未选中的JList项目的背景色,可以使用自定义的ListCellRenderer来实现。ListCellRenderer负责渲染JList中的每个项目,包括选中和未选中的状态。
以下是实现的步骤:
下面是示例代码:
import javax.swing.*;
import java.awt.*;
public class MyCellRenderer extends JLabel implements ListCellRenderer<Object> {
public MyCellRenderer() {
setOpaque(true);
}
public Component getListCellRendererComponent(JList<?> list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
setText(value.toString());
if (isSelected) {
setBackground(Color.BLUE); // 设置选中时的背景色
setForeground(Color.WHITE); // 设置选中时的前景色
} else {
setBackground(Color.WHITE); // 设置未选中时的背景色
setForeground(Color.BLACK); // 设置未选中时的前景色
}
return this;
}
}
使用这个自定义的ListCellRenderer,只需要将其设置到JList中即可:
JList<Object> list = new JList<>(new Object[]{"Item 1", "Item 2", "Item 3"});
list.setCellRenderer(new MyCellRenderer());
这样,未选中的JList项目的背景色就会根据自定义的设置进行显示了。
领取专属 10元无门槛券
手把手带您无忧上云