Pintar linha Jtable comparando data

2 respostas
lucas.caran

Galera estou com um sério problema de lógica…

Tenho uma Jtable que tem varias colunas, e uma dessas colunas é a de vencimento
não estou conseguindo pintar as linha onde um todos evento ja está vencido.

Segue meu código

Aqui o Jtable é alimentado com dados que vem do Banco de dados

javax.swing.table.DefaultTableModel dtm = (javax.swing.table.DefaultTableModel)tabela.getModel();

          TableCellRenderer pintaLinha = new pintaTabela();
          tabela.setDefaultRenderer(Object.class, pintaLinha);

                   int i = dtm.getRowCount();
                   for(int a = 0; a < i; a++)
                   {
                   dtm.removeRow(0);
                   }

                   while (rs.next()){
                        String eve_cod = rs.getString("eve_cod");
                        String cli_cod = rs.getString("cli_cod");
                        String tab_eve_cod = rs.getString("tab_cliente_cli_cod");
                        String nom = rs.getString("cli_nome");
                        String val =(String) String.valueOf(df.format(rs.getDouble("eve_valor_evento")));
                        String dat = rs.getString("eve_data_vencimento");
                        String desc = rs.getString("eve_descricao");
                        dtm.addRow(new Object[]{eve_cod, tab_eve_cod, cli_cod, nom, val, dat, desc});
                   }

e aqui está o meu if da classe pintaTabela

Object ref = table.getValueAt(row, 5);

if (isSelected) {
      foreground = Color.black;
      background = new Color(182, 205, 225);
    } else {
      if (ref != null && ref.equals("05/05/2010") ){
        foreground = Color.blue;
        background = Color.white;
      } else {
        foreground = Color.black;
        background = Color.white;
      }
    }

e aqui eu tenho minha data formatada que preciso comparar com a data do vencimento…

public void setDiaHoje(String dh){
         diaHoje = dh;
      } 
      public String getDiaHoje(){
          return diaHoje;
      }
    
    SimpleDateFormat xdiaAtual = new SimpleDateFormat("dd/MM/yyyy");
    Date ddiaAtual = new Date ();
    String diaAtual = xdiaAtual.format(ddiaAtual);

Eu não tenho mais idéias de como se faz isso…
sei que existe uma função chamada before() mas nunca usei,
se alguem ja fez algo assim por favor poste um exemplo pra mim…

Agradeço desde jáh…

2 Respostas

fantomas

Oi Lucas,

Este tipo de verificação pode ser feita através dos métodos before e after que estão presentes nas classes Date e GregorianCalendar. Se não me enganei vc está utilizando strings na manipulação dos dados. Acredito que vc tenha que modificar os tipos dos dados relacionados a datas para obter esta facilidade.

flws

lucas.caran

Fantomas, mas o meu problema é justamente esse, eu não tenho a minima noção de como capturo do banco de dados uma variavel e torná-la tipo data, e no meu caso eu preciso de algo um pouco mais complexo… (pelo menos eu acho que é complexo)

vou explicar o meu problema, eu prciso pegar o valor do banco e se não me engano colocá-lo em um array ou vetor que recebe os dados tipo date para depois compára-lo no IF / ELSE (um dos meus problemas é que eu não lembro como usa vetor, acho um saco, mas acredito que seja necesário)

na hora de fazer a condição if, colocála dentro de um for para que seja verificada cada posição do vetor para usar a função before()…

eu penso que talvez isso dê certo, mas não consegui instanciar algo desse tipo…

Se alguem tiver uma LUZ agradeceria muito…

valeu a atenção fantomas…

Criado 23 de novembro de 2010
Ultima resposta 23 de nov. de 2010
Respostas 2
Participantes 2