Seguinte, to fazendo esse panel da figura abaixo, ele tem uma “JTable” q mostra regras de firewall (iptables). Queria q qnd desmarcasse o “JCheckBox”, a linha dele fosse colorida de vermelho, e qnd marcasse a linha fosse colorida da cor normal q estava (branco ou cinza). So q eu n to sabendo fazer isso, rodeio q so ja e nd, ja li o tutorial da Sun de capo a rabo e nd ainda. Alguem poderia me sugerir como desenrrolar? Vlw…
Depois na sua table utuilize setDefaultRenderer(seuRenderer).
H
hlds
Seguinte, consegui, vlw, mas ficou qse 100%, pois ele nao ta mudando de cor qnd “marca/desmarca” o checkBox e sim qnd “marca/desmarca e muda a linha”, ou seja o render n ta atualizando exatmente na hr q “marca/desmarca” o checkBox e sim qnd “muda a linha”. Ficou legal, mas ficaria melhor se ele mudasse qnd “marcar/desmarcar” o checkBox. Nao to desenrrolando isso, se alguem souber, me fala, vlw…O codigo ficou assim:
//criando o renderDefaultTableCellRendererdtcr=newDefaultTableCellRenderer(){publicComponentgetTableCellRendererComponent(JTabletable,Objectvalue,booleanisSelected,booleanhasFocus,introw,intcolumn){Componentcomp=super.getTableCellRendererComponent(table,value,isSelected,hasFocus,row,column);booleanresult=(Boolean)table.getValueAt(row,0);if(!result){comp.setBackground(Color.RED);comp.setForeground(Color.BLACK);}elseif(row%2==0){comp.setBackground(Color.LIGHT_GRAY);comp.setForeground(Color.BLACK);}else{comp.setBackground(Color.WHITE);comp.setForeground(Color.BLACK);}returncomp;}/*public void setValue(Object value) { int i = 0; if (i%2 == 0) { setBackground(Color.LIGHT_GRAY); setForeground(Color.WHITE); } super.setValue(value); }*/};//setando o render para qualquer objeto da jTablejTable1.setDefaultRenderer(Object.class,dtcr);
M
mrsmylle
Na listener da sua tabela, você está atualizando??
H
hlds
nao coloquei nenhum evento na tabela nao. mas o metodo q executa o codigo acima está sendo chamado no inicio do programa. ele ta atualizando, so q so atualiza qnd marca o checkBox e muda a linha (acho q eh nesse momento q o render atua) e nao apenas qnd o checkBox eh marcado.
esse evento seria p por onde?
M
mrsmylle
Bom, eu uso tablmodellistener!!Para que ele atualize a minha tabela!!
RaulCarlin
Pergunta:
Quando clica na CheckBox, a linha fica com a cor de seleção padrão (tipo azul no Metal…)? Se sim, ela está sobrepondo a sua, basta usar o setSelectedBackground() e voltar ao normal depois que sair da seleção…
H
hlds
qnd seleciona o checkBox, ta azul sim. mas acho q vc entendeu errado. o problema nao eh a cor do checkbox, isso ta ok. o problema eh q qnd desmarco o checkBox, a linha da JTable nao fica vermelha imediatamente, ela so passa a ficar vermelha qnd a selecao sai dela, ou seja, qnd eu seleciono outra linha. entendeu agora?
RaulCarlin
Sim mas é da linha toda que estou dizendo…
O que ocorre é que o JTable tem uma cor para a linha selecionada e outra para a não selecionada, você tem que sobreescrever isso, para que o elemento mude para a cor que você deseja mesmo quando selecionado…