Colorir linha específica de uma JTable [Resolvido]
5 respostas
jorgefrancisco
Olá pessoal…
Sei que há vários tópicos aqui no GUJ e no google a respeito dessa dúvida, porém ainda não encontrei a solução para o meu problema… Tentei de tudo o que já foi dito no fórum e ainda nao consegui colorir uma linha específica da minha jtable…
O caso é o seguinte:
A cada inserção de linha na minha jtable eu gostaria de atribuir uma cor específica pra ela, por exemplo:
Depois do comando: modeloTabela.addRow(…) gostaria de setar uma cor para essa linha q foi inserida…
alguém tem alguma dica de como posso fazer isso? algum exemplo?
Esse método pinta toda a minha jtable de uma mesma cor… eu preciso de algo que atribua uma cor para uma linha específica… algo mais ou menos assim:
tabela.setCorLinha(linha, cor)
Obrigado
abraços!
fabiofalci
Cara
Tu vai ter que trabalhar com o teu TableModel e o teu Renderer.
Ou coloca uma lista das cores por linha no tableModel e o Renderer pega dele.
Ou o proprio objeto que esta na linha sabe a cor dele, dai o teu tableModel pega de la.
Esse exemplo abaixo tem um Renderer com as cores fixas… é por ai
publicclassColorTable{publicstaticvoidmain(String[]args){JTabletable=newJTable();table.setModel(newAbstractTableModel(){publicintgetColumnCount(){return3;}publicintgetRowCount(){return3;}publicObjectgetValueAt(introwIndex,intcolumnIndex){returnrowIndex+columnIndex;}});table.setDefaultRenderer(Object.class,newDefaultTableCellRenderer(){// lista de cores por linha, 3 linhas fixasColor[]colors=newColor[]{Color.CYAN,Color.ORANGE,Color.MAGENTA};publicComponentgetTableCellRendererComponent(JTabletable,Objectvalue,booleanisSelected,booleanhasFocus,introw,intcolumn){super.getTableCellRendererComponent(table,value,isSelected,hasFocus,row,column);if(!isSelected){setBackground(this.colors[row]);}returnthis;}});table.setSelectionBackground(Color.YELLOW);JPanelpanel=newJPanel(newBorderLayout());panel.add(newJScrollPane(table),BorderLayout.CENTER);JFrameframe=newJFrame();frame.setContentPane(panel);frame.setSize(800,600);frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.setVisible(true);}}
jorgefrancisco
Olá pessoal…
Problema resolvido… =D… vou tentar explicar mais ou menos o que eu fiz:
Criei a classe abaixo que herda de DefaultTableCellRenderer. Essa classe pinta a célula de acordo com a linha e coluna que eu passar