Bom dia pessoal!
Meu problema é o seguinte…
Eu tenho uma tabela no meu programa que de acordo com o que for inserido nela a linha do registro ficará de uma cor.
Funciona da seguinte maneira:
Eu tenho varias tarefas…e essas tarefa podem estar: pendentes, programadas ou concluidas.
Cada tarefa pode ter varios usuarios participanto…sendo assim uma réplica de cada tarefa para cada usuario…
ex: eu criei a tarefa com o id = 1…ai eu mando essa tarefa para mais 3 usuarios…daí irá replicar mais uma pendencia/tarefa para cada usuario…uma para quem criou e outras para os outros usuarios…o id dessas pendencias ficará da seguinte forma: (usuario1)1-1, (usuario2)1-1, (usuario3)1-1, (usuario4)1-1… onde o primeiro numero eh o id da tarefa e o segundo numero eh o id da pendencia…se algum usuario repassar a pendencia irá ser criado outras pendencias para os usuarios : (usuario1)1-2, (usuario2)1-2, (usuario3)1-2, (usuario4)1-2…
Um usuario(nao adm) tem uma tabela que lista todas as suas tarefas…Se a tarefa inserida na tabela for pendente a linha ficará vermelha, se for programada ficará azul e se já estiver concluida ficará verde…até aí tudo bem…ele faz isso tudo…
Só que o problema eh o seguinte…com um usuario adm pode se ver todas as pendencias de todos os usuarios…porem quando uma pendencia eh replicada iria ter uma linha na tabela para cada pendencia…ex:
Tabela:
pendencia usuario
1-1 usuario1
1-1 usuario2
1-1 usuario3
1-1 usuario4
1-2 usuario1
1-2 usuario2
1-2 usuario3
1-2 usuario4
mas na tela do adm aparece assim (pq eh para ser assim rs):
Tabela:
pendencia usuario
1-1 usuario1/usuario2/usuario3/usuario4
1-2 usuario1/usuario2/usuario3/usuario4
onde ele agrupa todas as pendencias iguais em um soh registro e coloca todos os usuarios participantes no registro tmbm…
isso já está fazendo…
mas agora sim vem o problema shaushua
quando eu vou inserir os registros na tabela eu mando uma sql para o banco pedindo todos os registro da tabela pendencia…e guardo eles em uma ArrayList…se eu tiver 60 registros no banco ele coloca os 60 nessa lista…mas ai quando eu agrupo os registros (igual está no segundo exemplo acima) ele se confunde todo e colore tudo errado as linhas…alguem sabe o q pode estar acontecendo!?
Abaixo está o codigo de colorir as linhas:
class ColorirCelula3 extends JLabel
implements TableCellRenderer{
public ColorirCelula3(){
setOpaque(true);
}
public Component getTableCellRendererComponent(
JTable table, Object value,
boolean isSelected, boolean hasFocus,
int row, int column){
Color foreground = null, background = null;
String dataProg = null;
dataProg = new PendenciaDb().getDataProgramada(PainelConsultarEditarPendenciaRoot.pendencia.get(row).getIdTarefa());
String cor = "";
if(PainelConsultarEditarPendenciaRoot.pendencia.get(row).getDataHoraResolveu()==null && dataProg==null){
foreground = new Color(0,0,0);
background = new Color(255,150,150);
cor = "vermelho";
if(value==null){
value = "";
}
}
else if(PainelConsultarEditarPendenciaRoot.pendencia.get(row).getDataHoraResolveu()==null && dataProg!=null){
foreground = new Color(0,0,0);
background = new Color(170,170,255);
cor = "azul";
if(value==null){
value = "";
}
}
else{
foreground = new Color(0,0,0);
background = new Color(170,255,170);
cor = "verde";
}
if(isSelected){
if(cor.equals("verde")){
foreground = new Color(255,255,255);
background = new Color(0,160,0);
}
else if(cor.equals("vermelho")){
foreground = new Color(255,255,255);
background = new Color(200,0,0);
}
else if(cor.equals("azul")){
foreground = new Color(255,255,255);
background = new Color(0,0,200);
}
}
this.setBackground(background);
this.setForeground(foreground);
this.setText(value.toString());
return this;
}
}
O metodo que preenche a tabela
public static void preencheGrade(List<Pendencia> pendencias)
{
DefaultTableModel dtm = (DefaultTableModel) tbPendencias.getModel();
while(dtm.getRowCount()>0)
{
dtm.removeRow(0);
}
int linha = 0;
for (Pendencia pendencia:pendencias)
{
String tipoPessoa = null;
String pessoa=null;
String dataHoraProgramado="",dataHoraResolvido="";
switch(pendencia.getTipoPessoa())
{
case 0:tipoPessoa="Cliente";pessoa = new ClienteDb().getCliente(pendencia.getIdPessoa());break;
case 1:tipoPessoa="Fornecedor";pessoa = new FornecedorDb().getFornecedor(pendencia.getIdPessoa());break;
case 2:tipoPessoa="Representante";pessoa = new RepresentanteDb().getRepresentante(pendencia.getIdPessoa());break;
case 3:tipoPessoa="Outros";pessoa = new OutrasPessoasDb().getOutrasPessoas(pendencia.getIdPessoa());break;
}
if (pendencia.getDataHoraProgramado()!=null)
{
dataHoraProgramado=new SimpleDateFormat("dd/MM/yyyy HH:mm:ss").format(pendencia.getDataHoraProgramado());
}
if (pendencia.getDataHoraResolveu()!=null)
{
dataHoraResolvido=new SimpleDateFormat("dd/MM/yyyy HH:mm:ss").format(pendencia.getDataHoraResolveu());
}
if(tbPendencias.getRowCount()==0){
dtm.addRow(new Object[]{pendencia.getIdTarefa()+"-"+pendencia.getIdPendencia(),tipoPessoa,pessoa,new UsuarioDb().getUsuario(pendencia.getIdUsuarioAdicionou()),new UsuarioDb().getUsuario(pendencia.getIdUsuarioDirecionado()),new SimpleDateFormat("dd/MM/yyyy HH:mm:ss").format(pendencia.getDataHoraAdicionado()),dataHoraProgramado,dataHoraResolvido,new SubTemaDb().getSubTema(pendencia.getIdSubTema()),pendencia.getIdTarefa(),pendencia.getOs(),pendencia.getContato(),pendencia.getDescricao()});
}
else{
String pen = pendencia.getIdTarefa() + "-" + pendencia.getIdPendencia();
if(pen.equals(""+tbPendencias.getValueAt(linha, 0))){
tbPendencias.setValueAt(tbPendencias.getValueAt(linha, 4)+"/"+new UsuarioDb().getUsuario(pendencia.getIdUsuarioDirecionado()), linha, 4);
}
else{
dtm.addRow(new Object[]{pendencia.getIdTarefa()+"-"+pendencia.getIdPendencia(),tipoPessoa,pessoa,new UsuarioDb().getUsuario(pendencia.getIdUsuarioAdicionou()),new UsuarioDb().getUsuario(pendencia.getIdUsuarioDirecionado()),new SimpleDateFormat("dd/MM/yyyy HH:mm:ss").format(pendencia.getDataHoraAdicionado()),dataHoraProgramado,dataHoraResolvido,new SubTemaDb().getSubTema(pendencia.getIdSubTema()),pendencia.getIdTarefa(),pendencia.getOs(),pendencia.getContato(),pendencia.getDescricao()});
linha++;
}
}
}
}
Desde já agradeço!!!