2012-03-20 14 views
5

Estoy usando JXTable y sé cómo hacerlo en base a DefaultRenderers for JTable, pero quiero saber cómo hacerlo de una manera que sea JXTable amigable basado en HighlighterPipeline.SwingX JXTable: use ColorHighlighter para colorear filas según un "objeto fila"

Tengo una lista de objetos que se muestran en una tabla, y cada fila representa un objeto. Me gustaría colorear las filas que muestran objetos de cierto tipo con un color diferente.

Parece que debería estar usando ColorHighlighter. Pero no puedo encontrar ejemplos para esto, aparte de los marcadores simples como "colorear cada dos filas" o algo por el estilo.

Necesito el número de fila ya que no existe un "objeto fila" en el paradigma JTable/TableModel, pero si puedo hacer eso, puedo probar fácilmente un predicado y devolver verdadero/falso para decirle al resaltador entrar o no.

¿Alguien me puede ayudar a encontrar la dirección correcta para hacer que esto funcione?

Respuesta

4

no importa, lo descubrí. Fue difícil encontrar la manera de usar ComponentAdapter adecuadamente.

JXTable table = ... 
final List<Item> itemList = ... 

final HighlightPredicate myPredicate = new HighlightPredicate() { 
     @Override 
     public boolean isHighlighted(
      Component renderer, 
      ComponentAdapter adapter) { 

      Item item = itemList.get(adapter.row); 
      return testItem(item); 
     } 

     public boolean testItem(Item item) { ... } 
} 

ColorHighlighter highlighter = new ColorHighlighter(
     myPredicate, 
     Color.RED, // background color 
     null);  // no change in foreground color 

table.addHighlighter(highlighter); 
+1

alegra que hayas encontrado una solución - sólo ten cuidado: la adapter.row está a la vista coordenadas, mientras que su elementoLista (muy probablemente?) Está en las coordenadas modelo, por lo que la prueba proporcione resultados incorrectos si se ordena la tabla /filtrado. Para solucionarlo, llame a adapter.convertRowIndexToModel – kleopatra

+0

ok gracias. Estoy deshabilitando la clasificación de JXTable a propósito para usar las instalaciones de clasificación GlazedLists, por lo que mis índices son coherentes con las filas finales mostradas. gracias sin embargo! –

+0

p.s. ¿Qué pasó con los oleoductos de Highlighter? ¿Se han ido? Estoy tratando de encontrar información general sobre marcadores de JXTable y es una colección aleatoria de cosas desactualizadas. –

Cuestiones relacionadas