Hi,

I have a JTable in which I use JList as row header. I also alternate
colors of rows between gray and white. Now I need to color some of the
rows of JList in red. What I have is vector of rows that need to be
colored in red, in ListCellRenderer I loop thru this vector and compare
each element to index value of the renderer, if there is a match I set
background to red if not color other way. It seems to be working but in
a strange way. If I have 6 rows and need to color rows 6,4 and 2 the
will be only row 6 colored in red. If I make rows 4 and 2 to be colored
in red only row 4 is in red. It seems renderer colors only last row to
be colored. Don't know what to do. Any help is greatly appeciated.

** code below **
thanks,
Alex

class RowHeaderRenderer extends JLabel implements ListCellRenderer {
               RowHeaderRenderer(JTable table) {
                                 JTableHeader header =
table.getTableHeader();
                                 setOpaque(true);

setBorder(UIManager.getBorder("TableHeader.cellBorder"));

setHorizontalAlignment(SwingConstants.LEFT);
                                 setForeground(header.getForeground());
                                 setFont(header.getFont());
              }
              public Component getListCellRendererComponent(JList list,
                                                            Object
value,
                                                            int index,
                                                            boolean
isSelected,
                                                            boolean
cellHasFocus){
                     setText((value == null) ? "" : value.toString());
                     for(int i = 0; i < unselectedRows.size(); i++){

if((String.valueOf(index)).equals(unselectedRows.elementAt(i))){
                             System.out.println("UNSELECT = " +
unselectedRows.elementAt(i));
                             setBackground(new Color(255,51,51));
                             setForeground(white);
                         }
                         else{
                             if(index % 2 != 0){
                                setBackground(white);
                                setForeground(Color.black);
                             }
                             else{
                                 setBackground(gray);
                                 setForeground(Color.black);
                             }
                         }
                     }
                     /*
                     if(index % 2 != 0)
                        setBackground(white);
                     else
                        setBackground(gray);
                     */
                     return this;
              }
        }

_______________________________________________
Advanced-swing mailing list
[EMAIL PROTECTED]
http://eos.dk/mailman/listinfo/advanced-swing

Reply via email to