Problemas com JTable dinâmica

0 respostas
higornucci

Olá amigos!

Estou com um pequeno problema com minha JTable.

O que deve fazer? Qdo estou cadastrando um serviço, posso clicar em consultar serviços e isso me trará todos os serviço cadastrados e eu posso filtrar esses serviços digitando o nome.

O que da errado? Ele não preenche minha tabela com os serviços que eu ‘puxei’ do banco.

Não estou conseguindo enxergar meu erro. Então vim recorrer a vocês que são programadores muito mais experientes.

public class CadastroServico extends javax.swing.JFrame {

    /** Creates new form CadastroServico */
    public CadastroServico() {
        initComponents();
        
        setLocationRelativeTo(null);
    }
    
    private void jButtonCancelarActionPerformed(java.awt.event.ActionEvent evt) {                                                
        // TODO add your handling code here:
        dispose();
    }                                               

    private void jButtonNovoActionPerformed(java.awt.event.ActionEvent evt) {                                            
        // TODO add your handling code here:
        this.jTextFieldDescricao.setText(null);
        this.jTextFieldFirma.setText(null);
    }                                           

    private void jButtonConfirmarActionPerformed(java.awt.event.ActionEvent evt) {                                                 
        // TODO add your handling code here:
        if(this.jTextFieldDescricao.getText().equals("")) {
            JOptionPane.showMessageDialog(this,  "Preencha o campo 'Descrição' corretamente.");
        } else {
            if(this.jTextFieldFirma.getText().equals("")) {
                JOptionPane.showMessageDialog(this,  "Preencha o campo 'Firma' corretamente.");
            } else {
                String descricao;
                String firma;
                descricao = this.jTextFieldDescricao.getText();
                firma = this.jTextFieldFirma.getText();

                DAO dao = new DAOFactory().getServicoDAO();

                DAOFactory factory = new DAOFactory();

                Servico servico = new Servico();
                servico.setDescrição(descricao);
                servico.setFirma(firma);

                factory.beginTransaction();
                dao.adiciona(servico);
                factory.commit();
                
                factory.close();
            }
        }
    }                                                

    private void jButtonConsultarActionPerformed(java.awt.event.ActionEvent evt) {                                                 
        // TODO add your handling code here:
        try {
            consultar = ConsultaServico.getInstanceConsultaServico();
            DAO dao = new DAOFactory().getServicoDAO();
            DAOFactory factory = new DAOFactory();
            factory.beginTransaction();
            List<Servico> lista = dao.listaTudo();
            factory.close();
            consultar.setLista(lista);
            consultar.showConsulta();
            if (consultar.isStatusParaAtualizacao() == true) {
                // Atualizar();
            }
        } catch (Exception ex) {
            Logger.getLogger(ConsultaServico.class.getName()).log(Level.SEVERE, null, ex);
        }
    }                                                

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

    
}

Classe ConsultaServico

public class ConsultaServico extends javax.swing.JDialog {

    /** Creates new form ConsultaServico */
    public ConsultaServico() {
        super(new Frame(), true);
        initComponents();

        setLocationRelativeTo(null);

        AlteraCellRenderer();
    }
    
    public void AlteraCellRenderer() {
        jtTabela.setDefaultRenderer(Object.class, new MyCellRenderer());
        jtTabela.setDefaultRenderer(Integer.class, new MyCellRenderer());
        jtTabela.setDefaultRenderer(Double.class, new MyCellRenderer());
        jtTabela.setDefaultRenderer(Float.class, new MyCellRenderer());
        jtTabela.setDefaultRenderer(Date.class, new MyCellRenderer());
    }

    public void AplicaRowSorterRowFilter() {
        // cria um TableRowSorter a partir do TableModelPadraoParaBean
        if (sorter == null) {
            sorter = new TableRowSorter<TableModel>(myTablemodel);
        }
        // Adiciona o objeto TableRowSorter à Tabela
        jtTabela.setRowSorter(sorter);
        String text = jtfFiltro.getText();
        if (text.length() == 0) {
            sorter.setRowFilter(null);
        } else {
            try {
                // Cria um Filtro de pesquisa com base na coluna selecionada
                sorter.setRowFilter(RowFilter.regexFilter('^' + text, getColuna()));
                setStatusParaAtualizacao(false);
            } catch (PatternSyntaxException pse) {
                System.err.println("Erro");
            }
        }
    }

    public int getColuna() {
        return coluna;
    }

    public void setColuna(int coluna) {
        this.coluna = coluna;
    }

    public boolean isStatusParaAtualizacao() {
        return StatusParaAtualizacao;

    }

    public void setStatusParaAtualizacao(boolean StatusParaAtualizacao) {
        this.StatusParaAtualizacao = StatusParaAtualizacao;
    }

    private void jtfFiltroKeyReleased(java.awt.event.KeyEvent evt) {                                      
        // TODO add your handling code here:
        AplicaRowSorterRowFilter();
    }                                     

    private void jtTabelaMouseClicked(java.awt.event.MouseEvent evt) {                                      
        // TODO add your handling code here:
        if (evt.getClickCount() == 1 && jtTabela.getSelectedRow() >= 0) {
            // Seta o indice da coluna selecionada para a filtragem somando 1, pois a 1° coluna esta oculta
            setColuna(jtTabela.getSelectedColumn());
            int viewRow = jtTabela.getSelectedRow();
            if (viewRow >= 0) {
                int modelRow = jtTabela.convertRowIndexToModel(viewRow);
                /* Seta o Cidigo primario do banco de dados que esta oculto na primeira coluna
                para realizar as consultas necessarias à alteração e exclusão de dados*/
                setCodigoPesquisado(Integer.valueOf(((TableModelPadraoParaBean) jtTabela.getModel()).getValueAt(modelRow, 0).toString()));
            }
            setStatusParaAtualizacao(true);
        }
    }                                     

    private void formWindowClosed(java.awt.event.WindowEvent evt) {                                  
        // TODO add your handling code here:
        try {
            Utilitarios.clearComponent(this.getContentPane());
            this.finalize();
        } catch (Throwable ex) {
            Logger.getLogger(ConsultaServico.class.getName()).log(Level.SEVERE, null, ex);
        }
    }                                 

    /* Metodo responsavel por pegar o codigo primario que esta oculto na 1° coluna
    que setado quando clicamos na Tabela */

    public Integer getCodigoPesquisado() {
        return codigoPesquisado;
    }
    /* Metodo responsavel por setar o codigo primario oculto na 1° coluna quando
    clicamos na Tabela*/

    public void setCodigoPesquisado(Integer codigoPesquisado) {
        this.codigoPesquisado = codigoPesquisado;
    }

    public List<?> getLista() {
        return this.lista;
    }

    // Metodo responsavel por setar uma lista de beans
    public void setLista(List<?> lista) {
        this.lista = lista;
    }

    public void showConsulta() {
        if (myTablemodel == null) {
            myTablemodel = new TableModelPadraoParaBean();
        }
        myTablemodel.atualiza(getLista());
        jtTabela.setModel(myTablemodel);
//        jtTabela.removeColumn(jtTabela.getColumnModel().getColumn(0));
        ConsultaServico.Consulta.setVisible(true);
    }

    public Date ConverteDataParaBanco(String data) throws ParseException {
        DateFormat formatter = new SimpleDateFormat("dd/MM/yyyy");
        java.sql.Date date = new java.sql.Date(formatter.parse(data).getTime());
        return date;
    }

    public String ConverteDataParaTradicional(Date date) throws ParseException {
        DateFormat formatter = new SimpleDateFormat("dd/MM/yyyy");
        String data = formatter.format(date);
        return data;
    }

    public static ConsultaServico getInstanceConsultaServico() {
        if (Consulta == null) {
            try {
                Consulta = new ConsultaServico();
            } catch (Exception ex) {
                Logger.getLogger(ConsultaServico.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
        return Consulta;
    }

    ////////////////////////////////////////////////////////////////////////////////////////
// MODELO DE CELLRENDERER CRIADO PARA SATISFAZER A NECESSIDADE DE UMA TABELA ZEBRADA E//
//                     QUE PINTASSE A CELULA QUANDO SELECIONADA                       //
////////////////////////////////////////////////////////////////////////////////////////
    class MyCellRenderer extends DefaultTableCellRenderer {

        private Color whiteColor = new Color(254, 254, 254);
        private Color alternateColor = new Color(123, 193, 255);
        private Color selectedColor = new Color(61, 128, 223);

        @Override
        public Component getTableCellRendererComponent(JTable table,
                Object value, boolean selected, boolean focused, int row,
                int column) {

            super.getTableCellRendererComponent(table, value, selected, focused, row, column);

            Color bg = null;
            // Testa se não existe celula selecionada, se não existir zebra a tabela
            if (!selected) {
                bg = (row % 2 == 0 ? alternateColor : whiteColor);
            } // Testa se existe celula selecionada, se exitir tambem zebra a tabela
            else {
//               bg = selectedColor;
                bg = (row % 2 == 0 ? alternateColor : whiteColor);
            }
            // Pinta a celula selecionada de amarelo
            if (row == table.getSelectedRow() && column == table.getSelectedColumn()) {
                bg = Color.YELLOW;
            }
            setBackground(bg);
//            setForeground(selected ? Color.red : Color.black);
            return this;
        }
    }
}

Desculpem pelo tamanho das classes, mas como eu disse…não sou muito experiente xD

Tirei todo o trecho de código gerado pelo netbeans para uma melhor visualização

Alguem pode, por favor, me ajudar a descobrir onde estou errando?

Criado 27 de fevereiro de 2010
Respostas 0
Participantes 1