Dúvida pesquisar em JTable já carregado!

3 respostas
joaolenosi

Bom dia pessoal, como eu fasso para pesquisar em um JTable já carregado com todos os registros na medida que eu vou digitando?
Por exemplo: assim quando eu abro a minha aplicação esse Jtable já vem carregado com todos os registros, desta forma não se tem necessidade de realizar uma nova
consulta no banco, basta apenas ir localizando de acordo com o que for digitado.

Aqui é a minha classe

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package gui.consultas;

import banco.Conexao;
import gui.layout.AJDialog;
import gui.layout.AJTable;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import javax.swing.AbstractAction;
import javax.swing.Action;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.KeyStroke;
import javax.swing.table.DefaultTableModel;

/**
 *
 * @author JOHN LENO
 */
public final class ConsultaGrupoProduto extends AConsulta{
    
 
    private JTextField tf_codGrupoProduto;
    private ArrayList<Object[]> gruposList;
    
    private Object[][] carregarGruposProduto() {
        gruposList = new ArrayList<>();

        try {
            PreparedStatement pstmt = Conexao.getConexao().prepareStatement(QUERY_102);
            ResultSet rs = pstmt.executeQuery();

            while (rs.next()) {
                Object[] object = new Object[2];

                object[0] = rs.getString("grp_cd");
                object[1] = rs.getString("grp_nm");

                gruposList.add(object);
            }
        } catch (SQLException ex) {
        }

        Object[][] gruposArray = new Object[gruposList.size()][2];
        gruposArray = gruposList.toArray(gruposArray);

        return gruposArray;
    }
    
    

    @Override
    public void inicializarComponentes() {
    
      

    }

    @Override
    public void inserirPropriedadesComponentes() {
        String[] columnIdentifiers = {"Código", "Descrição"};
        DefaultTableModel model = (DefaultTableModel) jt.getModel();
        model.setDataVector(carregarGruposProduto(), columnIdentifiers);
        jt.setAutoResizeMode(AJTable.AUTO_RESIZE_OFF);
        jt.getColumnModel().getColumn(0).setPreferredWidth(70);//Especifica o tamanho da coluna
        jt.getColumnModel().getColumn(1).setPreferredWidth(278);
                
   
    
       // jt.setFillsViewportHeight(true);

        /*
         * Listeners.
         */
        jt.addMouseListener(
                new MouseListener() {
                    @Override
                    public void mouseClicked(MouseEvent e) {
                        if (e.getClickCount() == 2) {
                            tf_codGrupoProduto.setText(jt.getValueAt(jt.getSelectedRow(), 0).toString());
                            ConsultaGrupoProduto.this.dispose();
                            tf_codGrupoProduto.requestFocus();
                        }
                    }

                    @Override
                    public void mousePressed(MouseEvent e) {
                        tf_codGrupoProduto.requestFocus();
                    }

                    @Override
                    public void mouseReleased(MouseEvent e) {
                        tf_codGrupoProduto.requestFocus();
                    }

                    @Override
                    public void mouseEntered(MouseEvent e) {
                        tf_codGrupoProduto.requestFocus();
                    }

                    @Override
                    public void mouseExited(MouseEvent e) {
                        tf_codGrupoProduto.requestFocus();
                    }
                });
        jb1.addActionListener(
                new ActionListener() {
                    @Override
                    public void actionPerformed(ActionEvent e) {
                        if (jt.getSelectedRow() != -1) {
                            tf_codGrupoProduto.setText(jt.getValueAt(jt.getSelectedRow(), 0).toString());
                            ConsultaGrupoProduto.this.dispose();
                        }
                    }
                });
        jb2.addActionListener(
                new ActionListener() {
                    @Override
                    public void actionPerformed(ActionEvent e) {
                        ConsultaGrupoProduto.this.dispose();
                    }
                });


        /*
         * Código para modificar o key binding para tecla ENTER.
         */
        Action enter = new AbstractAction() {
            @Override
            public void actionPerformed(ActionEvent e) {
                tf_codGrupoProduto.setText(jt.getValueAt(jt.getSelectedRow(), 0).toString());
               // ConsultaGrupos.this.dispose();
            }
        };
        jt.getInputMap(JTable.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).put(
                KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0), "ENTER");
        jt.getActionMap().put("ENTER", enter);
    }

    @Override
    public void inserirComponentes() {

    }
    
    public ConsultaGrupoProduto(AJDialog owner, JTextField tf_codGrupoProduto){
        super(owner);
        this.tf_codGrupoProduto = tf_codGrupoProduto;
        this.setTitle("Consulta Grupo de Produtos");
        this.setSize(400, 265);
        this.setLocationRelativeTo(null);

        inicializarComponentes();
        inserirPropriedadesComponentes();
        inserirComponentes();

        this.setVisible(true);
    }
    
}

Olhe a imagem da tela aê :

http://img141.imageshack.us/img141/3562/apollowh.png

3 Respostas

jhaga

Acho que este link irá te ajudar.

joaolenosi

Beleza vou da uma olhada!

joaolenosi

Não consegui implementar :confused:
Alguem ajuda?

Criado 20 de novembro de 2012
Ultima resposta 20 de nov. de 2012
Respostas 3
Participantes 2