dúvida para colorir linha de jtable

4 respostas
marcusluiz83

Bom dia!

Tenho uma tabela com uma coluna chamada “situação”. Como faço para que todos as células em que o valor de “situação” seja igual a “afastado”, toda a linha fique vermelha?

Os tópicos que encontrei mudam apenas se clicar na linha, mas minha tabela exibe uma lista de um cadastro de funcionários, e preciso que os funcionários afastados sejam reconhecidos com a linha vermelha sem precisar clicar nelas.

Espero que possam me ajudar.

Obrigado!

4 Respostas

B

Ola,

Dê uma pesquisada no tocante a renderer:

http://download.oracle.com/javase/tutorial/uiswing/components/table.html#renderer

marcusluiz83

Amigão, obrigado pela ajuda, mas sinceramente, tenho uma dificuldade muito grande com tabelas, já tinha olhado a documentação mas não soube como proceder neste meu trabalho. Como eu poderia fazer?

Segue meu código:

Obrigado!

package forms;

import dao.FuncionariosBrMetalsDao;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.sql.SQLException;
import java.util.List;
import javax.swing.JOptionPane;
import javax.swing.ListSelectionModel;
import javax.swing.table.DefaultTableModel;
import modelos.FuncionariosBrMetals;

/**
 *
 * @author marcus
 */
public class formularioConsulta extends javax.swing.JFrame {

    DefaultTableModel tmConsulta = new DefaultTableModel(null, new String[]{"Situação", "Matrícula", "Nome do titular", "Dependentes", "Mensagem"});
    List<FuncionariosBrMetals> funcionariosBrMetals;
    ListSelectionModel lsmFuncionariosBrMetals;
    DefaultTableModel tmListagem = new DefaultTableModel(null, new String[]{"Situação", "Matrícula", "Nome do titular", "Dependentes", "Mensagem"});
    List<FuncionariosBrMetals> listagemCompleta;
    ListSelectionModel lsmListagemCompleta;

    /** Creates new form formularioConsulta */
    public formularioConsulta() {
        initComponents();
        try {
            consultaListagem();
        } catch (SQLException ex) {
            JOptionPane.showMessageDialog(null, "Falha na conexão com o banco de dados. Entre em contato com o desenvolvedor.");
        }
    }

    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">
    private void initComponents() {

        painelPrincipal = new javax.swing.JPanel();
        labelTitulo = new javax.swing.JLabel();
        painelConsulta = new javax.swing.JPanel();
        labelPesquisaMatricula = new javax.swing.JLabel();
        textFieldMatricula = new javax.swing.JTextField();
        botaoPesquisaMatricula = new javax.swing.JButton();
        labelTitular = new javax.swing.JLabel();
        textFieldTitular = new javax.swing.JTextField();
        botaoPesquisaNome = new javax.swing.JButton();
        jScrollPane1 = new javax.swing.JScrollPane();
        tabelaPesquisa = new javax.swing.JTable();
        jPanel1 = new javax.swing.JPanel();
        jScrollPane2 = new javax.swing.JScrollPane();
        tabelaListagem = new javax.swing.JTable();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        setTitle("Listagem de funcionários :: BR Metals /+/LaraSoft");

        labelTitulo.setFont(new java.awt.Font("Arial Black", 0, 18));
        labelTitulo.setText("Listagem de funcionários :: BR Metals");

        painelConsulta.setBorder(javax.swing.BorderFactory.createTitledBorder("Consulta de funcionários"));

        labelPesquisaMatricula.setText("Matrícula:");

        textFieldMatricula.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                textFieldMatriculaActionPerformed(evt);
            }
        });

        botaoPesquisaMatricula.setText("Pesquisar matrícula");
        botaoPesquisaMatricula.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                botaoPesquisaMatriculaActionPerformed(evt);
            }
        });

        labelTitular.setText("Nome do titular:");

        textFieldTitular.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                textFieldTitularActionPerformed(evt);
            }
        });

        botaoPesquisaNome.setText("Pesquisar nome");
        botaoPesquisaNome.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                botaoPesquisaNomeActionPerformed(evt);
            }
        });

        tabelaPesquisa.setModel(tmConsulta);
        tabelaPesquisa.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
        lsmFuncionariosBrMetals = tabelaPesquisa.getSelectionModel();
        ;
        jScrollPane1.setViewportView(tabelaPesquisa);

        javax.swing.GroupLayout painelConsultaLayout = new javax.swing.GroupLayout(painelConsulta);
        painelConsulta.setLayout(painelConsultaLayout);
        painelConsultaLayout.setHorizontalGroup(
            painelConsultaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(painelConsultaLayout.createSequentialGroup()
                .addGroup(painelConsultaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(painelConsultaLayout.createSequentialGroup()
                        .addGroup(painelConsultaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                            .addGroup(painelConsultaLayout.createSequentialGroup()
                                .addComponent(labelPesquisaMatricula)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                .addComponent(textFieldMatricula, javax.swing.GroupLayout.PREFERRED_SIZE, 121, javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                .addComponent(botaoPesquisaMatricula))
                            .addGroup(painelConsultaLayout.createSequentialGroup()
                                .addComponent(labelTitular)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                .addComponent(textFieldTitular)))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(botaoPesquisaNome))
                    .addGroup(painelConsultaLayout.createSequentialGroup()
                        .addGap(12, 12, 12)
                        .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 815, Short.MAX_VALUE)))
                .addContainerGap())
        );
        painelConsultaLayout.setVerticalGroup(
            painelConsultaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(painelConsultaLayout.createSequentialGroup()
                .addGroup(painelConsultaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(labelPesquisaMatricula)
                    .addComponent(textFieldMatricula, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(botaoPesquisaMatricula))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(painelConsultaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(labelTitular)
                    .addComponent(textFieldTitular, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(botaoPesquisaNome))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 104, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );

        jPanel1.setBorder(javax.swing.BorderFactory.createTitledBorder("Listagem completa"));

        tabelaListagem.setModel(tmListagem);
        tabelaListagem.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
        lsmListagemCompleta = tabelaListagem.getSelectionModel();
        ;
        jScrollPane2.setViewportView(tabelaListagem);

        javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
        jPanel1.setLayout(jPanel1Layout);
        jPanel1Layout.setHorizontalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jScrollPane2, javax.swing.GroupLayout.DEFAULT_SIZE, 815, Short.MAX_VALUE)
                .addContainerGap())
        );
        jPanel1Layout.setVerticalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addComponent(jScrollPane2, javax.swing.GroupLayout.DEFAULT_SIZE, 275, Short.MAX_VALUE)
                .addContainerGap())
        );

        javax.swing.GroupLayout painelPrincipalLayout = new javax.swing.GroupLayout(painelPrincipal);
        painelPrincipal.setLayout(painelPrincipalLayout);
        painelPrincipalLayout.setHorizontalGroup(
            painelPrincipalLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(painelPrincipalLayout.createSequentialGroup()
                .addContainerGap()
                .addGroup(painelPrincipalLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                    .addComponent(jPanel1, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addGroup(javax.swing.GroupLayout.Alignment.LEADING, painelPrincipalLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                        .addComponent(painelConsulta, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                        .addComponent(labelTitulo)))
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );
        painelPrincipalLayout.setVerticalGroup(
            painelPrincipalLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(painelPrincipalLayout.createSequentialGroup()
                .addComponent(labelTitulo)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(painelConsulta, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(painelPrincipal, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(painelPrincipal, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                .addContainerGap())
        );

        pack();
    }// </editor-fold>

    private void botaoPesquisaMatriculaActionPerformed(java.awt.event.ActionEvent evt) {                                                       
        try {
            consultaMatricula();
        } catch (SQLException ex) {
            JOptionPane.showMessageDialog(null, "Matrícula não encontrada");
        }
    }                                                      

    private void botaoPesquisaNomeActionPerformed(java.awt.event.ActionEvent evt) {                                                  
        try {
            consultaNome();
        } catch (SQLException ex) {
            JOptionPane.showMessageDialog(null, "Nome não encontrado");
        }
    }                                                 

    private void textFieldMatriculaActionPerformed(java.awt.event.ActionEvent evt) {
        textFieldMatricula.addKeyListener(new KeyAdapter() {

            public void keyPressed(KeyEvent e) {
                if (e.getKeyCode() == KeyEvent.VK_ENTER) {
                    botaoPesquisaMatricula.doClick();
                }
            }
        });

    }

    private void textFieldTitularActionPerformed(java.awt.event.ActionEvent evt) {
        textFieldTitular.addKeyListener(new KeyAdapter() {

            public void keyPressed(KeyEvent e) {
                if (e.getKeyCode() == KeyEvent.VK_ENTER) {
                    botaoPesquisaNome.doClick();
                }
            }
        });
    }

    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {

            public void run() {
                new formularioConsulta().setVisible(true);
            }
        });
    }
    // Variables declaration - do not modify
    private javax.swing.JButton botaoPesquisaMatricula;
    private javax.swing.JButton botaoPesquisaNome;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JScrollPane jScrollPane2;
    private javax.swing.JLabel labelPesquisaMatricula;
    private javax.swing.JLabel labelTitular;
    private javax.swing.JLabel labelTitulo;
    private javax.swing.JPanel painelConsulta;
    private javax.swing.JPanel painelPrincipal;
    private javax.swing.JTable tabelaListagem;
    private javax.swing.JTable tabelaPesquisa;
    private javax.swing.JTextField textFieldMatricula;
    private javax.swing.JTextField textFieldTitular;
    // End of variables declaration

    protected void consultaMatricula() throws SQLException {
        FuncionariosBrMetalsDao dao = new FuncionariosBrMetalsDao();
        funcionariosBrMetals = dao.getLista("%" + textFieldMatricula.getText() + "%");
        mostraPesquisa(funcionariosBrMetals);
    }

    protected void consultaNome() throws SQLException {
        FuncionariosBrMetalsDao dao = new FuncionariosBrMetalsDao();
        funcionariosBrMetals = dao.getLista2("%" + textFieldTitular.getText() + "%");
        mostraPesquisa(funcionariosBrMetals);
    }

    protected void consultaListagem() throws SQLException {

        FuncionariosBrMetalsDao dao = new FuncionariosBrMetalsDao();
        listagemCompleta = dao.getLista3(null);
        mostraListagem(listagemCompleta);

    }

    private void mostraPesquisa(List<FuncionariosBrMetals> brmetals) {
        while (tmConsulta.getRowCount() > 0) {
            tmConsulta.removeRow(0);
        }
        if (brmetals.size() == 0) {
            JOptionPane.showMessageDialog(null, "Funcionário não encontrado");
        } else {
            String[] linha = new String[]{null, null, null, null};
            for (int i = 0; i < brmetals.size(); i++) {
                tmConsulta.addRow(linha);
                tmConsulta.setValueAt(brmetals.get(i).getSituacao(), i, 0);
                tmConsulta.setValueAt(brmetals.get(i).getMatricula(), i, 1);
                tmConsulta.setValueAt(brmetals.get(i).getNome(), i, 2);
                tmConsulta.setValueAt(brmetals.get(i).getDependente(), i, 3);
                tmConsulta.setValueAt(brmetals.get(i).getMensagem(), i, 4);
            }
        }
    }

    private void mostraListagem(List<FuncionariosBrMetals> brmetals) {
        while (tmListagem.getRowCount() > 0) {
            tmListagem.removeRow(0);
        }
        if (brmetals.size() == 0) {
            JOptionPane.showMessageDialog(null, "Falha ao exibir a listagem");
        } else {
            String[] linha = new String[]{null, null, null, null};
            for (int i = 0; i < brmetals.size(); i++) {
                tmListagem.addRow(linha);
                tmListagem.setValueAt(brmetals.get(i).getSituacao(), i, 0);
                tmListagem.setValueAt(brmetals.get(i).getMatricula(), i, 1);
                tmListagem.setValueAt(brmetals.get(i).getNome(), i, 2);
                tmListagem.setValueAt(brmetals.get(i).getDependente(), i, 3);
                tmListagem.setValueAt(brmetals.get(i).getMensagem(), i, 4);
            }
        }
    }
}
Anime

Oi,espero que ajude…

http://www.guj.com.br/posts/list/13322.java

marcusluiz83

Obrigado! Vou dar uma olhada e depois posto o resultado.

Criado 27 de agosto de 2010
Ultima resposta 27 de ago. de 2010
Respostas 4
Participantes 3