Bom galera estou apanhando para destacar as prioridades na minha janela de chamados, preciso que quando a data estiver vencida a linha fique vermelha, e quando estiver faltando 2 dias para vencer ficar amarela.
já utilizo algo para deixar mudar o bg de cor ordenando entre par e impar outra, no caso branco e azul.
mais não consigo bolar um jeito de comparar as datas para que fique do jeito que eu preciso.
pesquisei bastante no forum e não consegui resolver esse problema.
alguma dica?
//Ordena o bg entre par e impar.
tab.setDefaultRenderer ( Object.class, new DefaultTableCellRenderer() {
private static final long serialVersionUID = 1L;
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
if(isSelected) {
setBackground(new Color(160,170,210));
}
else {
if(row % 2 == 0){
setBackground(new Color(255,0,0));
}
else {
setBackground(null);
}
}
return this;
}
});
//laço onde carrega o chamado
for ( int i = 0; rs.next(); i++ ) {
tabchm.adicLinha();
tabchm.setValor( StringFunctions.sqlDateToStrDate( rs.getDate( GridChamado.DTCHAMADO.name() ) ), i, GridChamado.DTCHAMADO.ordinal() );
tabchm.setValor( rs.getInt( GridChamado.PRIORIDADE.name() ), i, GridChamado.PRIORIDADE.ordinal() );
tabchm.setValor( rs.getInt( GridChamado.CODCHAMADO.name() ), i, GridChamado.CODCHAMADO.ordinal() );
tabchm.setValor( rs.getString( GridChamado.DESCCHAMADO.name() ), i, GridChamado.DESCCHAMADO.ordinal() );
tabchm.setValor( rs.getString( GridChamado.SOLICITANTE.name() ), i, GridChamado.SOLICITANTE.ordinal() );
// tabchm.setValor( rs.getString( GridChamado.STATUS.name() ), i, GridChamado.STATUS.ordinal() );
imgColuna = Chamado.getImagem( rs.getString( "status" ), Chamado.IMG_TAMANHO_M );
tabchm.setValor( imgColuna, row, GridChamado.STATUS.ordinal() );
tabchm.setValor( rs.getBigDecimal( GridChamado.QTDHORASPREVISAO.name() ), i, GridChamado.QTDHORASPREVISAO.ordinal() );
tabchm.setValor( StringFunctions.sqlDateToStrDate( rs.getDate( GridChamado.DTPREVISAO.name() ) ), i, GridChamado.DTPREVISAO.ordinal() );
tabchm.setValor( rs.getString( GridChamado.DESCTPCHAMADO.name() ), i, GridChamado.DESCTPCHAMADO.ordinal() );
tabchm.setValor( rs.getInt( GridChamado.CODCLI.name() ), i, GridChamado.CODCLI.ordinal() );
// Se chamado estiver em atendimento
if ( rs.getString( "ematendimento" ).equals( "S" ) ) {
tabchm.setValor( chamado_em_atendimento, i, GridChamado.EM_ATENDIMENTO.ordinal() );
tabchm.setValor( rs.getString( GridChamado.DADOS_ATENDIMENTO.name() ), i, GridChamado.DADOS_ATENDIMENTO.ordinal() );
}
else {
tabchm.setValor( chamado_parado, i, GridChamado.EM_ATENDIMENTO.ordinal() );
tabchm.setValor( "", i, GridChamado.DADOS_ATENDIMENTO.ordinal() );
}
tabchm.setValor( rs.getString( GridChamado.DETCHAMADO.name() ), i, GridChamado.DETCHAMADO.ordinal() );
totalizacaoCham = totalizacaoCham.add(rs.getBigDecimal( GridChamado.QTDHORASPREVISAO.name() ) );
row++;
}
//o que precisa ser comparado
tabchm.setValor( StringFunctions.sqlDateToStrDate( rs.getDate( GridChamado.DTPREVISAO.name() ) ), i, GridChamado.DTPREVISAO.ordinal()
public static String sqlDateToStrDate(java.sql.Date d) {
String ret = "";
GregorianCalendar cal = new GregorianCalendar();
int iDia = cal.get(Calendar.DAY_OF_MONTH);
int iMes = cal.get(Calendar.MONTH) + 1;
int iAno = cal.get(Calendar.YEAR);
if (d == null) {
return ret;
}
try {
cal.setTime(d);
iDia = cal.get(Calendar.DAY_OF_MONTH);
iMes = cal.get(Calendar.MONTH) + 1;
iAno = cal.get(Calendar.YEAR);
ret = StringFunctions.strZero("" + iDia, 2) + "/" + StringFunctions.strZero("" + iMes, 2) + "/" + iAno;
}
catch (Exception e) {
e.printStackTrace();
}
return ret;
}
Muito Obrigado,