Destacar data vencida e preste a vencer

2 respostas
B

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,

2 Respostas

fabim

As vezes vc precisa extender sua pesquisa até o Google. Tente o link abaixo:

http://www.java-forums.org/awt-swing/541-how-change-color-jtable-row-having-particular-value.html

kiq095

CALMA …fabim

hehehehe…

tente fazer um if() se ela estiver vencida ou prestes a vencer seta ela de novo so que com outra cor …ao inves de tentar altera a cor …!!

e meio grande e tosto mais acho q atendera seu problema …!!

Criado 29 de março de 2011
Ultima resposta 29 de mar. de 2011
Respostas 2
Participantes 3