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