Alterar cor de uma única linha com DefaultTableModel

5 respostas
W

Pessoal, o título já diz tudo…
to tentando alterar a cor de uma linha da minha tabela, em tempo de execução…
Porém, não tenho tido muito sucesso, já tentei de quase tudo… aproveito pra perguntar
qual a diferença entre uma jtable e a defaulttablemodel…

5 Respostas

W

eu vi nesse exemplo, como fazer com uma jtable… mais eu to usando default…

http://www.roseindia.net/java/example/java/swing/CustomCellRenderer.shtml

V

Isso não se resolve com o Default. Já tá passando de hora de se livrar dele, não?

W

Ctz? é que o projeto está quase no fim… só queria adicionar mais essa função… =\

V

Bom, você pode fazer um CellRenderer que receba o número das linhas a serem pintadas.
Não é a melhor prática do mundo, mas como vc tá pouco se lixando para boas práticas, deve funcionar.

Deve ficar mais ou menos assim:

public class CustomTableCellRenderer extends DefaultTableCellRenderer{
   Set<Integer> linhas = new HashSet<Integer>();

   public Component getTableCellRendererComponent (JTable table, Object obj, boolean isSelected, boolean hasFocus, int row, int column) {
      Component cell = super.getTableCellRendererComponent(table, obj, isSelected, hasFocus, row, column);
      cell.setBackground(linhas.contains(row) ? Color.GREEN : Color.WHITE);
      return cell;
   }

   public void adicionarLinha(int linha) {
      linhas.add(linha);
   }
 
   public void removerLinha(int linha) {
      linhas.remove(linha);
   }
}
Depois, basta associar esse CellRenderer à sua tabela:
seuRenderer = new CustomTableCellRenderer();
for (int i = 0; i < suaTable.getColumnCount(); i++) {
   suaTable.getColumnModel().getColumn(i).setCellRenderer(seuRenderer);
}
E claro, marcar as linhas quando necessário:
seuRenderer.addLinha(linhaQueDeveMudarDeCor);

Agora, por que você insistiu no Default? Faz algum tempo que já te sugeri para mudar.
É algum tipo de prazer masoquista? Ou é preguiça de aprender o jeito certo mesmo?

W

Não tenho muita prática com swing, meu forte mesmo é web…
acontece que peguei um trabalhinho pra fazer aqui em pouco tempo, mais para o próximo irei deixar o default de lado,
obg de qualquer forma…

Criado 30 de maio de 2011
Ultima resposta 30 de mai. de 2011
Respostas 5
Participantes 2