Mudar cor da linha de uma Row de um jTablee

5 respostas
platnum

Queria saber se tem como mudar a cor de uma Row da jTable.

5 Respostas

francislon

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

platnum

Mas quando uso esse codigo que vc me mostro.O codigo além de passar de row em row adicionando uma cor diferente de acordo com o status,ele adiciona uma cor so a todas as row’s.

Codigo

public void Verf_cor(){
      modelo = (DefaultTableModel)jTable1.getModel();
 int Nrow=modelo.getRowCount();
 System.out.println("count:"+Nrow);
    for(int e=0;e<Nrow;e++){
        Add_cor(e);
        System.out.println(e);
    }
}
public void Add_cor(Integer row){
     modelo = (DefaultTableModel)jTable1.getModel();

     

        System.out.println((String)modelo.getValueAt(row,2));
        
         String n=(String)modelo.getValueAt(row,2);

        if(n.trim().equals("Livre")){
         
            muda_cor(188,210,238,row);
        }
 
        if(n.trim().equals("Reservado")){
         
            muda_cor(124,205,124,row);
        }

      if(n.trim().equals("Ocupado")){
        
           muda_cor(240,128,128,row);
        }

}
public void muda_cor(final Integer r,final Integer g,final Integer b,final Integer w){
   jTable1.setDefaultRenderer(Object.class, new DefaultTableCellRenderer() {
            public Component getTableCellRendererComponent(JTable table, Object value,
                    boolean isSelected, boolean hasFocus, int row, int column) {
                super.getTableCellRendererComponent(table, value,isSelected,
                        hasFocus, row, column);

                if (row ==w) {
                   super.setBackground(new Color(r,g,b));

                } else {
                   
                }
                return this;
            }
        });


}

Resultado:

francislon

Dá uma olhada nisso:

import javax.swing.*;
import javax.swing.table.*;
import java.awt.*;
import java.util.HashMap;
import java.util.Map;

public class CustomCellRenderer {

    JTable tabela;
    TableColumn tcol;
    Map&lt;Integer, Color&gt; cores = new HashMap&lt;Integer, Color&gt;();

    public static void main(String[] args) {
        new CustomCellRenderer();
    }

    public CustomCellRenderer() {
        JFrame frame = new JFrame(&quot;Creating a Custom Cell Reanderer!&quot;);
        JPanel panel = new JPanel();
        String data[][] = {{&quot;Vinod&quot;, &quot;Computer&quot;, &quot;3&quot;},
            {&quot;Rahul&quot;, &quot;History&quot;, &quot;2&quot;},
            {&quot;Manoj&quot;, &quot;Biology&quot;, &quot;4&quot;},
            {&quot;Sanjay&quot;, &quot;PSD&quot;, &quot;5&quot;}};
        String col[] = {&quot;Name&quot;, &quot;Course&quot;, &quot;Year&quot;};
        DefaultTableModel model = new DefaultTableModel(data, col);
        tabela = new JTable(model);
        tcol = tabela.getColumnModel().getColumn(0);
        tcol.setCellRenderer(new CustomTableCellRenderer());
        tcol = tabela.getColumnModel().getColumn(1);
        tcol.setCellRenderer(new CustomTableCellRenderer());
        tcol = tabela.getColumnModel().getColumn(2);
        tcol.setCellRenderer(new CustomTableCellRenderer());
        JTableHeader header = tabela.getTableHeader();
        header.setBackground(Color.yellow);
        JScrollPane pane = new JScrollPane(tabela);
        panel.add(pane);
        frame.add(panel);
        frame.setSize(500, 150);
        frame.setUndecorated(true);
        frame.getRootPane().setWindowDecorationStyle(JRootPane.PLAIN_DIALOG);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);
        mudaCor();
    }

    public void mudaCor() {
        TableModel modelo = (DefaultTableModel) tabela.getModel();
        int nRow = modelo.getRowCount();
        for (int e = 0; e &lt; nRow; e++) {
            String n = (String) modelo.getValueAt(e, 1);
            if (n.trim().equals(&quot;Computer&quot;)) {
                cores.put(e, Color.blue);
            } else if (n.trim().equals(&quot;History&quot;)) {
                cores.put(e, Color.GRAY);
            } else {
                cores.put(e, Color.RED);
            }
        }
    }

    public class CustomTableCellRenderer extends DefaultTableCellRenderer {

        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(cores.get(row));

            return cell;
        }
    }
}
platnum

Obrigado pela atenção,Agradecido.
Funciono ema! :smiley:

D

platnum:
Obrigado pela atenção,Agradecido.
Funciono ema! :smiley:

Caro Amigo platnum estou precisando fazer a mesma coisa que vc, peguei esse código e fiz rodar blz, porém não estou conseguindo adaptar a minha Table existente, vc poderia me ajudar?

Criei a minha Table com Swing, o nome da variável é jTable1 e criei um metodo para formata-la, seu tamanho e talz… ela possui 7 colunas, ela está dentro de uma JInternhalFrame que chamada pela minha frama principal através de um botão.

Fico no aguardo.

Criado 4 de novembro de 2010
Ultima resposta 27 de mai. de 2013
Respostas 5
Participantes 3