8

如何动态更改在 JList 中选择的项目的背景颜色?

4

4 回答 4

22

像下面这样的东西应该有助于作为一个起点:

public class SelectedListCellRenderer extends DefaultListCellRenderer {
     @Override
     public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
         Component c = super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
         if (isSelected) {
             c.setBackground(Color.RED);
         }
         return c;
     }
}
// During the JList initialisation...
jlist1.setCellRenderer(new SelectedListCellRenderer());
于 2009-10-16T09:12:13.910 回答
1

一种更简单的方法是在 Eclipse 中进入设计模式,然后在 JList 的属性中,单击具有两个小箭头和中间一个黄色大箭头的按钮以打开“显示高级属性”。然后向下滚动并更改显示“selectionBackground”的颜色并更改那里的颜色(它可能是灰色的,但它仍然会改变)。现在,当你运行你的程序时,无论你选择什么,背景都是那个颜色。

于 2012-03-30T08:12:48.110 回答
1
 jList1.setSelectedIndex(currentLine);
 jList1.setSelectionBackground(Color.red);

只需设置要在循环中着色的所有项目的选定索引并相应地更改颜色!

于 2015-05-08T09:41:03.327 回答
0

如果我清楚地了解您,请查看javax.swing.ListCellRenderer. 您需要重新实现它或扩展javax.swing.DefaultListCellRenderer和自定义该getListCellRendererComponent方法。

于 2009-10-16T08:46:18.480 回答