How to generate a Jlist with alternating colors

前端 未结 1 933

In Java how do I get a JList with alternating colors? Any sample code?

1条回答
  •  轻奢々
    轻奢々 (楼主)
    2020-12-31 13:13

    To customize the look of a JList cells you need to write your own implementation of a ListCellRenderer.

    A sample implementation of the class may look like this: (rough sketch, not tested)

    public class MyListCellThing extends JLabel implements ListCellRenderer {
    
        public MyListCellThing() {
            setOpaque(true);
        }
    
        public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
            // Assumes the stuff in the list has a pretty toString
            setText(value.toString());
    
            // based on the index you set the color.  This produces the every other effect.
            if (index % 2 == 0) setBackground(Color.RED);
            else setBackground(Color.BLUE);
    
            return this;
        }
    }
    

    To use this renderer, in your JList's constructor put this code:

    setCellRenderer(new MyListCellThing());
    

    To change the behavior of the cell based on selected and has focus, use the provided boolean values.

    0 讨论(0)
提交回复
热议问题