Esta é minha tabela, que faz consulta no banco de dados em todas as colunas, exceto a de situação, que é preenchida condicionalmente, após calulos feitos com a data. Funcionando bacanca bacana
Figura 1 -> Jtable com uma cor so.
http://img108.imageshack.us/my.php?image=tabela1ku2.jpg
Quero incrementar o seguinte… Com base no conteudo da célula da coluna 8 situacao,
preciso colorir a linha. (a imagem abaixo esta alterada para demonstrar o que preciso)
Figura 2 -> Jtable com uma cor so.
http://img108.imageshack.us/my.php?image=tabela2bb5.jpg
//Aqui vai o cógido que gera a primeira figura 1, so que ele coloca uma cor apenas… obsevando a primeira linha da jtable.
//aqui coloco na coluna situacao se esta vencida ou nao, com base em um calculo com datas.
for (int row=count-1; row>=0; row--){
try {
String pegadata = (String) jTable1.getValueAt(row,6);
String pegahora = (String) jTable1.getValueAt(row,7);
java.util.Date dataHora = sdf.parse(pegadata + " " + pegahora);
java.util.Date data1 = dataHora;
//
java.util.Date data2 = sdf.parse("25/04/2008 09:52:00");
double diasDiferenca = ((double) (data1.getTime() - data2.getTime())) / (24 * 60 * 60 * 1000);
if (diasDiferenca <0){
situacao = "Vencida";
jTable1.setForeground(Color.green);
}
else if (diasDiferenca>=0 && diasDiferenca<=0.083811226846592){
situacao = "Crítica";
jTable1.setForeground(Color.BLUE);
}
else if (diasDiferenca>0.083811226846592 && diasDiferenca<=1.0){
situacao = "Vencendo";
jTable1.setForeground(Color.DARK_GRAY);
}
else
{
situacao = "não vencido";
}
jTable1.setValueAt(situacao, row, 8);
} catch (ParseException ex) {
Logger.getLogger(Cad_osm.class.getName()).log(Level.SEVERE, null, ex);
}
sei que posso utilizar algo do tipo do codigo abaixo… mas, sinceramente não consegui em nenhuma das milhares de tentativa…
Agradeço desde já, a ajuda.
TableCellRenderer tcr = new Colorir();
TableColumn column =
tabela.getColumnModel().getColumn(1);
column.setCellRenderer(tcr);
class Colorir extends JLabel implements TableCellRenderer{
public Component getTableCellRendererComponent(
JTable table, Object value, boolean isSelected,
boolean hasFocus, int row, int column){
if (Situ <0){
situacao = "Vencida";
jTable1.setForeground(Color.green);
}
else if (diasDiferenca>=0 && diasDiferenca<=0.083811226846592){
situacao = "Crítica";
jTable1.setForeground(Color.BLUE);
}
else if (diasDiferenca>0.083811226846592 && diasDiferenca<=1.0){
situacao = "Vencendo";
jTable1.setForeground(Color.DARK_GRAY);
}
else
{
situacao = "não vencido";
}
jTable1.setValueAt(situacao, row, 8);
} catch (ParseException ex) {
Logger.getLogger(Cad_osm.class.getName()).log(Level.SEVERE, null, ex);
}
return this;
class Colorir extends JLabel implements TableCellRenderer{
public Component getTableCellRendererComponent(
JTable table, Object value, boolean isSelected,
boolean hasFocus, int row, int column){
public void validate() {}
public void revalidate() {}
protected void firePropertyChange(String propertyName,
Object oldValue, Object newValue) {}
public void firePropertyChange(String propertyName,
boolean oldValue, boolean newValue) {}
}}