JTable: mostrar linhas com DataVenc vencidas em vermelho

4 respostas
E

Ola,

Tenho uma classe derivada de JTable, chamada JColorTable, com este codigo para intercalar cores par/impar, e esta funcionando 100%:

public Component prepareRenderer(TableCellRenderer renderer,
    int rowIndex, int vColIndex) {
    Component c = super.prepareRenderer(renderer, rowIndex, vColIndex);
    if (isCellSelected(rowIndex, vColIndex)) {
      c.setBackground(colortab);
      c.setForeground(Color.WHITE);
    } else if (rowIndex % 2 == 0) {
      c.setBackground(colortab1);
      c.setForeground(Color.BLACK);
    } else {
      // If not shaded, match the table's background
      c.setBackground(colortab2);
      c.setForeground(Color.BLACK);
    }
    return c;
  }

Agora eu precisava que, apos preencher a JTable com o meu datamodel, eu pudesse fazer um codigo do tipo:

se valor da coluna DataVenc < hoje 
 entao mostra esta linha em vermelho
 senao mostra as cores normais do codigo acima

mas nao da pra fazer isso no prepareRenderer, pois este metodo é chamado antes das linhas/colunas serem preenchidas.

Qual seria o metodo a sobrescrever da JTable para fazer isso?

4 Respostas

B

Galera ja alguem conseguiu resolver este problema?

Tou com um semelhante :frowning:

Abraço e Obrigado

brlima

:arrow: http://www.guj.com.br/posts/list/63893.java
:arrow: http://www.exampledepot.com/egs/javax.swing.table/CustRend.html

B

Galera tou pecisando pintar algumas colunas da minha JTable mas apenas após a escolha de um item de uma jcombox.
Sera que alguem me pode ajudar?

Cumprimentos e Obrigado

fantomas

Oi edilmar e a que mais interessar,

Então carinha vou te lançar em uma direção que vai te ajuda (assim espero :smiley: ):

Tem uma classe chamada DefaultTableCellRenderer, crie uma outra classe que extenda ela e sobrescreva o método public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected,
boolean hasFocus, int row, int col)

Note que neste método será passado vários parametros, os que serão importantes pra vc são table, value, row, col pois com eles você conseguirá acessar o model da table e verificar os dados para tomar alguma decisão.

Mais uma coisa, dentro deste método vc pode executar o seguinte: super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, col), é a execução do mesmo método só que na estrutura superior do objeto ele vai te retornar um objeto que representa a célula apontada nos parametros (row e col), ou seja, vc poderá mudar a cor da célula nesta mesma implementação se quiser.

Espero não ter confundido mais ainda a coisa, mas acho que dá pra resolver não esqueça de pegar um tutorial e o javadoc sobre esta classe que falei.

Pessoalmente acho esse caminho um pouco complicado mas não lembro de outro agora…

flw

Criado 20 de julho de 2006
Ultima resposta 12 de ago. de 2008
Respostas 4
Participantes 4