2012-03-23 7 views
5

Quiero cambiar el color de fondo de un encabezado de tabla particular. En mi aplicación, debo establecer el color del encabezado Rojo en el mes actual. enter image description here Mi código está aquí ::particular un encabezado de tabla color java columpio

 jTable1.getTableHeader(). 
    setDefaultRenderer(
    new DefaultTableHeaderCellRenderer()); 



    @Override 
    public Component getTableCellRendererComponent(JTable table, Object value, 
      boolean isSelected, boolean hasFocus, int row, int column) { 
    super.getTableCellRendererComponent(table, value, 
      isSelected, hasFocus, row, column); 
    JTableHeader tableHeader = table.getTableHeader(); 

    if(column==1) 
    tableHeader.setBackground(Color.red); 


    return this; 
    } 

Esto hace que todo rojo el color de cabecera. Por favor, dame alguna sugerencia. Gracias de antemano.

Respuesta

6

La memoria de color infame de DefaultTableCellRenderer :-) Tienes que

  • establecer el color de fondo siempre: es decir, tanto para el estado normal y destacó
  • lo hacen antes de llamar a super

algo como:

@Override 
    public Component getTableCellRendererComponent(JTable table, 
     Object value, boolean isSelected, boolean hasFocus, int row, 
     int column) { 
     if (myHighlightCondition) { 
      setBackground(Color.RED); 
     } else { 
      setBackground(null); 
     } 
    super.getTableCellRendererComponent(table, value, isSelected, hasFocus, 
      row, column); 
    return this; 
    } 

Para obtener más información (y por qué es necesario), consulte un How do I correctly use custom renderers to paint specific cells in a JTable?

+0

+1 a esta respuesta y la respuesta vinculada. Ahora eso es algo que vale la pena recordar para evitar perder montones de tiempo la próxima vez que estoy trabajando con las tablas – Robin

+0

Muchas gracias kleopatra – Aritra

Cuestiones relacionadas